首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使线程在EDT (事件分派线程)的非EDT线程上运行

使线程在EDT (事件分派线程)的非EDT线程上运行
EN

Stack Overflow用户
提问于 2010-03-13 05:46:47
回答 2查看 3.3K关注 0票数 4

我有一个在EDT上运行的方法,在里面我想让它在一个新的(非EDT)线程上执行一些东西。我当前的代码如下:

代码语言:javascript
复制
@Override
    public void actionPerformed(ActionEvent arg0) {
//gathering parameters from GUI

//below code I want to run in new Thread and then kill this thread/(close the JFrame)
new GameInitializer(userName, player, Constants.BLIND_STRUCTURE_FILES.get(blindStructure), handState);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-13 05:50:04

您可以创建并启动一个新的Java Thread,它从EDT线程中执行您的方法:

代码语言:javascript
复制
@Override
    public void actionPerformed(ActionEvent arg0) {

        Thread t = new Thread("my non EDT thread") {
            public void run() {
                //my work
                new GameInitializer(userName, player, Constants.BLIND_STRUCTURE_FILES.get(blindStructure), handState);
            }

        };
        t.start();
    }
票数 3
EN

Stack Overflow用户

发布于 2010-03-13 06:00:24

您可以使用SwingWorker在EDT之外的工作线程上执行任务。

例如。

代码语言:javascript
复制
class BackgroundTask extends SwingWorker<String, Object> {
    @Override
    public String doInBackground() {
        return someTimeConsumingMethod();
    }

    @Override
    protected void done() {
        System.out.println("Done");
    }
}

不管你怎么称呼它:

代码语言:javascript
复制
(new BackgroundTask()).execute();
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2436113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档