【问题标题】:How to optimize Java multithreading code (SWT)如何优化 Java 多线程代码 (SWT)
【发布时间】:2016-09-24 03:58:28
【问题描述】:

我正在用 SWT 编写一个 GUI 应用程序,我的代码看起来像这样:

button.addSelectionListener(new SelectionAdapter() {
         @Override
         public void widgetSelected(final SelectionEvent e) {

         ... lot of variable initialization from text fields etc.

            new Thread(new Runnable() {
               @Override
               public void run() {

               ... more than 400 lines of code

               display.asyncExec() everywhere ...

      }).start();
   }
}

有没有办法优化这种代码? 我想将线程移动到它自己的类,但是,如何轻松获取所有 Component 值?

【问题讨论】:

  • 这不是一个关于多线程、关于用户界面、关于优化或关于 SWT 的问题。你真正要问的是,我有一个很大的班级,我想分成几个小班,我该怎么做?换句话说,我如何重构代码?有整本书都是关于这个的。很难给出适合这个论坛的答案。
  • 同意詹姆斯,但我不知道如何“创造”一个好问题!我仍然认为我的问题集中在一个特定的主题上。

标签: java multithreading user-interface optimization swt


【解决方案1】:

在类的末尾创建一个嵌套类:

public class Someclass{
    //main code here

    class Nestedclass implements Runnable{
        //thread code here
    }
} 

这样代码将被分成两部分并且更易于阅读,并且嵌套类仍然可以访问所有全局变量。

【讨论】:

  • 非常感谢!我喜欢这种方法,但我更喜欢使用不同的 .java 源文件!
  • 要获得不同的 .java 源文件,首先提供您的初始变体。您插入的代码无法编译。
  • Eclipse IDE 有 Refactor->Convert anonymous class to nested 选项。我相信其他 IDE 也有类似的功能。这样,您可以将扩展转换为 Runnable 以及 SelectionEvent 。
猜你喜欢
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
相关资源
最近更新 更多