2010-08-16 26 views
5

Tôi đang sử dụng javax.swing.Timer để lên lịch và chạy các sự kiện. Nhưng có vẻ như đang đóng băng GUI. Chỉ muốn biết liệu những sự kiện này có được chạy trên một chuỗi riêng biệt hay không hoặc liệu tôi có phải tự mình làm điều đó hay không.Java làm javax.swing.Timer chạy trên chủ đề mới?

Cảm ơn

Trả lời

8

"Mặc dù tất cả các Timers thực hiện chờ đợi của họ bằng cách sử dụng duy nhất, chủ đề chia sẻ (tạo ra bởi các đối tượng Timer đầu tiên mà thực thi), các xử lý sự kiện hành động cho Timers thực thi trên thread khác - các event-dispatching thread . Điều này có nghĩa rằng các trình xử lý hành động cho Timers một cách an toàn có thể thực hiện các hoạt động vào các thành phần Swing Tuy nhiên, nó cũng có nghĩa là xử lý phải thực hiện một cách nhanh chóng để giữ cho giao diện đáp ứng "-.. javax.swing.Timer

Nhấn mạnh thêm.

Hợp đồng bổ sung: SwingWorker được thiết kế cho trường hợp này. Đặc biệt, nó cung cấp một cách thuận tiện để giảm tải công việc trong khi định kỳ thay đổi tiến trình trên EDT.