Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法从自己的方法处理AWT队列?_Java_Events_Awt - Fatal编程技术网

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是对的。我希望你顽固的同事会接受延续传递风格,因为它足够新颖,值得注意。没问题,延续很有趣。