我看到某个人无法/愿意更改长期运行的方法来返回Future<Something>
而非<Something>
的问题。不幸的是,该方法也从AWT-Thread调用,具有已知的后果。我告诉过他,他在胡说八道,但可能有可能。他可以从他的方法中启动一个SwingWorker(或其他),并在等待它完成时处理AWT-Queue。
我的意思是
public Something aLongRunningMethodCalledFromTheAwtThread() {
FutureTask<Something> future = new FutureTask<Something>(...);
EventQueue eventQueue = Toolkit.getEventQueue();
while (true) {
if (future.isDone()) return future.get();
AWTEvent event = eventQueue.getCurrentEvent();
if (event==null) {
waitForAWhile();
} else {
eventQueue.pop(); // <---- is protected
process(event); // <---- BUT HOW???
}
}
}
AFAIK,这样的事情在其他框架中完成,我想知道这在Swing / AWT中是否可行?
答案 0 :(得分:0)
当一个正面向上的解决方案已经存在时,实施一个好的解决方案毫无意义。该方法需要作为单独的线程执行。周期。