首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwingWorker性能

SwingWorker性能
EN

Stack Overflow用户
提问于 2013-08-18 07:22:14
回答 1查看 316关注 0票数 1

我正在编写一个Java Swing程序。如果我使用以下方法,可能会导致性能下降吗?

代码语言:javascript
复制
jButton.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
    SwingWorker worker = new SwingWorker() {
      protected Object doInBackground() throws Exception {
        return null;
      }

      protected void done() {
        // do stuff
      }
    };
    worker.execute();
  }
});

如果我在done()中执行一些繁重的处理任务,那么将SwingWorker实例定义为全局成员而不是本地匿名类声明更好吗?

我认为如果它是本地的,那么每次调用actionPerformed时都会创建它(是吗?)。使用全局实例会导致性能的提高吗?在全局/本地方法中内存利用率有什么不同吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-18 11:51:17

在你的具体例子中,它很容易回答。按照javadoc类中的指定,SwingWorker被设计为只运行一次(请参见this SO question)

SwingWorker只被设计为只执行一次。多次执行SwingWorker不会导致两次调用doInBackground方法。

因此,在本例中,每次调用actionPerformed时都必须创建一个新实例。

附带注意:繁重的处理工作应该在doInBackground方法中完成,而不是在done方法中完成,否则会阻塞EDT。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18296698

复制
相关文章

相似问题

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