Runlater javafx

image
Cho em hỏi cái lệnh Application.runLater() nó hoạt động như nào vậy? ( Vì em thấy không có lệnh này thì nó vẫn hoạt động bình thường khi em (khởi tạo) set trạng thái cho các button, label, …)

1 Like

Để đảm bảo an ninh luồng (Thread).
Việc gọi đến phương thức này như việc bạn đẩy một thao tác tiếp theo vào hàng đợi (queue) công việc sẽ làm, thay vì làm nó luôn.
Bạn sẽ nhận ra khác biệt khi việc bạn cần làm tốn rất nhiều thời gian.
Nếu bạn không gọi đến phương thức trên, đoạn mã sẽ thực hiện ngay lập tức, thay vì vào hàng đợi để thực hiện, nếu công việc này tốn nhiều thời gian, luồng giao diện chính (UI thread) sẽ bị treo (“đơ”) vì phải chờ thực hiện xong.
Hầu hết các thao tác liên quan đến giao diện (UI) đều phải đẩy vào hàng đợi. Thao tác ngắn thì có thể không cần.

Bạn thử tạo 1 thanh cuộn dài loằng ngoằng rồi cho nó cuộn từ từ xuống (dùng sleep) theo 2 cách không và có gọi đến runLater xem có gì khác biệt không.

Trong rất nhiều nền tảng HĐH và ngôn ngữ lập trình, đều thực hiện theo cách này.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?