我知道SO是针对特定问题的,但是我需要有关在Java中使用Swing Worker线程的正确做法的建议.
我的应用程序生成大型HTML文本以响应显示在jTextPane中的计算过程.为了避免阻塞GUI,我曾经在Swing Worker线程中进行计算.
我的问题是以下内容开始计算,我需要在GUI的不同菜单复选框和列表框中提供大量信息,并且在计算结束时需要在EDT中启动功能.
这对我来说有两种可能性:
第一个是向Swing Worker发送大量信息,还需要传递MainFrame来访问“ done()”中的特定功能.
public class MyWorker extends SwingWorker {
private MyMainFrame frame;
public MyWorker(plenty of params) {
}
@Override
public Void doInBackground() {
//my background process
}
@Override
public void done() {
frame.myfunc1;
frame.myfunc2;
frame.myfunc3;
}
}
第二个是使用内部类
用Java正确选择哪一个.如果两者都是“正确的”,那么一个相对于另一个的利弊是什么.