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之间的桥梁,并且相当保证从方法process
, publish
和done
outoput将在EventDispatchThread
2)你可以从Executor
调用SwingWorker
,这是最安全的方法如何通过实现SwingWorker
在Swing中创建multithreading
3)仔细注意数字或线程,因为Executor
不关心SwingWorkers
life_cycle
4)另一个重要的通知和在这里
5)对于SwingWorker
监听状态,你必须实现PropertyChangeListener
SwingWorker
还有其他方法process()
和done()
,它们在事件派发线程中自动执行。 如果您计划在用户界面中显示进度或最终结果,这会派上用场。