Tôi đang sử dụng SwingWorker để thực hiện một số tác vụ tải nặng trên ứng dụng tôi đang thực hiện. Mặc dù hôm nay tôi đã vượt qua lớp Executor và ví dụ này:Sự khác biệt giữa SwingWorker và Executor
Executors.newCachedThreadPool().execute(new Runnable() {
public void run() {
someTask();
});
Ai đó có thể giải thích lý do tại sao người ta sử dụng SwingWorker thay vì ví dụ trên? Đây là cách tôi hiện đang sử dụng SwingWorker:
SwingWorker worker = new SwingWorker() {
protected Object doInBackground() {
someTask();
return null;
}
};
worker.execute();
Kiểm tra [API] (http://docs.oracle.com/ javase/7/docs/api/javax/swing/SwingWorker.html) và bạn sẽ thấy SwingWorker triển khai giao diện Future (và Runnable), được trả về từ phương thức 'submit (...)' của ExecutorService. Một SwingWorker đã được xây dựng để tương tác tốt với chuỗi sự kiện Swing. –