您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

我如何知道我是否在事件分发线程上?

我如何知道我是否在事件分发线程上?

如果在EDT外部运行的代码调用GUI类中定义的方法,则该代码不会在EDT上运行,而是在调用线程中运行。

如果在EDT中运行的代码调用了非GUI类中定义的代码,则该代码将在EDT上运行。

规则是,如果您不创建其他线程,则正在调用方法将在运行调用代码的线程上运行–线程与定义方法的类不对应。

在EDT上运行的方法是 ,它们是由Swing而不是您调用的。(不过,如果您是从EDT打电话给他们,它们可能仍然是。)

同样,Runnable.run()传递给SwingUtilities.invokeLater()和的方法内的任何代码invokeAndWait()也可以在EDT上运行。

您从EDT调用的任何常规方法都将在EDT上运行。

Thread您创建的代码调用的任何代码(无论是直接使用线程,还是直接使用ExecutorService,或SwingWorker.doInBackground()都不 在EDT上。您程序的main()方法 也不 在EDT上。

其他 2022/1/1 18:33:48 有584人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶