SwingWorker和Executor之间的差异

我正在使用SwingWorker在我正在制作的应用程序上执行一些重载任务。 虽然今天我遇到了Executor类和这个例子:

Executors.newCachedThreadPool().execute(new Runnable() { public void run() { someTask(); }); 

有人可以解释为什么人们会使用SwingWorker而不是上面的例子吗? 这是我目前使用SwingWorker的方式:

 SwingWorker worker = new SwingWorker() { protected Object doInBackground() { someTask(); return null; } }; worker.execute(); 

1)通过实现Future创建SwingWorker作为Java Essentials Classes和Swing之间的桥梁,并且相当保证从方法processpublishdone outoput将在EventDispatchThread

2)你可以从Executor调用SwingWorker ,这是最安全的方法如何通过实现SwingWorker 在Swing中创建multithreading

3)仔细注意数字或线程,因为Executor不关心SwingWorkers life_cycle

4)另一个重要的通知和在这里

5)对于SwingWorker监听状态,你必须实现PropertyChangeListener

SwingWorker还有其他方法process()done() ,它们在事件派发线程中自动执行。 如果您计划在用户界面中显示进度或最终结果,这会派上用场。