我在代码库中遇到了以下代码,我不明白它是如何工作的。我在Swing有点新手,如果这看起来像个愚蠢的问题就很抱歉。
public static void invokeOnEventDispatchThread(Runnable r){
try{
if(SwingUtilities.isEventDispatchThread()){
r.run();
}else{
SwingUtilities.invokeAndWait(r);
}
}catch(Exception e){
;
}
}
这里会在事件派发线程中立即调用r.run()吗?方法的重点是r.run()被调用为asap,将其移动到队列的头部?
感谢。
答案 0 :(得分:1)
该方法的重点是同步运行代码:
特别是,invokeAndWait的javadoc声明不应该在EDT上调用该方法,因此代码中有2个分支。