有没有办法阻止在EDT上的执行,仍然有一个生动的GUI?等待多线程的AWT事件调度程序线程
我注意到,当调用setVisible(true)时,JDialog/JOptionPane有类似的东西。
为什么我需要这个?
我的班级应满足下列接口:
interface Quitable {
boolean quit();
}
我的班级需要这样的实现:
class MyApp implements Quitable {
ExecutorService executor = Executors.newCachedThreadPool();
// ...
public boolean quit() {
FuturTask<Boolean> futureTask = new FutureTask<Boolean>(saveJob);
executor.execute(futureTask);
// TODO: keep gui vivid
boolean saveResult = futureTask.get();
return saveResult;
}
// ...
}
我需要返回保存过程的结果(这可能需要一些时间并可能失败)。或者你会建议另一种解决方案?感谢您的任何想法。 ;)
有关JDialog-Hack的介绍:http://www.futuretek.com/presents/foxtrot/KeepingYourSwingApplicationsResponsiveUsingFoxTrot.ppt – Synox 2011-02-18 14:04:30