Java 有没有办法从自己的方法处理AWT队列?
我看到有人问了我一个问题,他不能/不愿意改变一个长期运行的方法来返回一个Java 有没有办法从自己的方法处理AWT队列?,java,events,awt,Java,Events,Awt,我看到有人问了我一个问题,他不能/不愿意改变一个长期运行的方法来返回一个未来,而不仅仅是。不幸的是,该方法也会从AWT线程调用,其结果是已知的。我告诉过他,他在胡说八道,但可能有这种可能性。他可以从方法内部启动SwingWorker(或其他什么),并在等待AWT队列完成的同时处理它 我是说 public Something aLongRunningMethodCalledFromTheAwtThread() { FutureTask<Something> future = n
未来
,而不仅仅是
。不幸的是,该方法也会从AWT线程调用,其结果是已知的。我告诉过他,他在胡说八道,但可能有这种可能性。他可以从方法内部启动SwingWorker(或其他什么),并在等待AWT队列完成的同时处理它
我是说
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???
}
}
}
public Something以及从WTThread()调用的运行方法{
FutureTask future=新的FutureTask(…);
EventQueue EventQueue=Toolkit.getEventQueue();
while(true){
if(future.isDone())返回future.get();
AWTEvent event=eventQueue.getCurrentEvent();
如果(事件==null){
waitforawile();
}否则{
eventQueue.pop()当右上解决方案已经存在时,执行上行解决方案是没有意义的。该方法需要作为一个单独的线程来执行。句号。< /p> + 1,顽固的流氓会考虑吗?这也是我所写的,我也告诉过他,所以你没有给我任何信息。站在AWT或者他从另一个框架中学习到的。@maaartinus:对不起,我不是有意掩盖这个问题。恐怕EJP是对的。我希望你顽固的同事会接受延续传递风格,因为它足够新颖,值得注意。没问题,延续很有趣。