加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – On Event Dispatch Thread —想要离开它

发布时间:2020-12-15 04:19:41 所属栏目:Java 来源:网络整理
导读:假设我拥有的方法有时在Event Dispatch Thread上调用,有时则不然.现在假设我希望在该方法中的一些代码调用除事件调度线程之外的线程. 有没有办法在此时在EDT以外的线程上运行某些代码? 我试过这个: if (SwingUtilities.isEventDispatchThread()) { new Run
假设我拥有的方法有时在Event Dispatch Thread上调用,有时则不然.现在假设我希望在该方法中的一些代码调用除事件调度线程之外的线程.

有没有办法在此时在EDT以外的线程上运行某些代码?

我试过这个:

if (SwingUtilities.isEventDispatchThread()) {
            new Runnable() {
                @Override
                public void run() {
                    myMethod();
                }
            }.run();
        } else {
            myMethod();
        }

但是即使我创建了一个新的Runnable,myMethod()也最终在EDT上运行.

有没有办法在此时在EDT以外的线程上运行myMethod()?

解决方法

你做得很好.但是你的Runnable必须传递给一个新线程.

例如

new Thread(new Runnable() {
 @Override
 public void run() {
     myMethod();
 }
}).start();

请注意,调用“run()”方法不会启动新的Thread.请改用start().

另见http://docs.oracle.com/javase/tutorial/essential/concurrency/simple.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读