1
我在代码库中发现了下面这段代码,我不明白它是如何工作的。我在Swing有点新手,因此如果它看起来像一个愚蠢的问题,很抱歉。这个方法invokeOnEventDispatchThread做什么?
public static void invokeOnEventDispatchThread(Runnable r){
try{
if(SwingUtilities.isEventDispatchThread()){
r.run();
}else{
SwingUtilities.invokeAndWait(r);
}
}catch(Exception e){
;
}
}
这里将r.run()将在事件调度线程立即被调用? r.run()被称为asap,将它移动到队列头部的方法点?
谢谢。
感谢您的回复。 “要么你已经在EDT执行了,而且代码只是运行” - 代码是否立即运行?还是将它放入事件队列并在轮到它时运行? –
'r.run()'总是立即在当前线程中运行,无论是否为EDT都没有区别。所以是的,它立即运行,没有它不在队列中。该队列仅适用于非EDT线程。 – assylias
谢谢。这回答了我的问题。 –