此方法调用 OnEventDispatchThread 做什么



我在代码库中遇到了以下一段代码,我不明白它是如何工作的。我是 Swing 的新手,因此如果这看起来像一个愚蠢的问题,我很抱歉。

public static void invokeOnEventDispatchThread(Runnable r){
try{
  if(SwingUtilities.isEventDispatchThread()){
    r.run();
  }else{
    SwingUtilities.invokeAndWait(r);
  }
}catch(Exception e){
  ;
}

}

这里会在事件调度线程中立即调用 r.run() 吗?方法的重点是否是尽快调用 r.run(),将其移动到队列的头部?

谢谢。

该方法的要点是同步运行代码:

  • 要么您已经在 EDT 中执行并且代码只是运行
  • 或者你不是,该方法将等到 EDT 执行可运行对象

特别是,用于 invokeAndWait 的 javadoc 指出,该方法不应在 EDT 上调用,因此代码中有 2 个分支。

相关内容

  • 没有找到相关文章

最新更新