我使用摆动工作线程在后台模式下加载数据。该例程的简化版本如下。重要的部分是 work2 持有对象,直到线程完成,然后 work2 得到一个空值。
我可能期望的是垃圾收集来删除线程,但我在调试器中看到 SwingWorker-pool-1-thread-1-running。从我的角度来看,我不再使用该线程,因为加载已完成。
很可能我最好只是忽略线程仍在运行的事实,但我还是想问一下。是否需要显式终止线程?我还没有寻找明确的命令来执行此操作,因为我习惯于将对象设置为 null 并且一旦没有更多引用,Java 就会为我杀死事情。
那么最好的建议是什么?杀死它还是忽略它?
谢谢,伊兰
protected void LoadData(PetCtFrame par1, ArrayList<ImagePlus> imgList, ArrayList<Integer>seriesType) {
work2 = new bkgdLoadData();
work2.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
String propertyName = evt.getPropertyName();
if( propertyName.equals("state")) {
SwingWorker.StateValue state = (SwingWorker.StateValue) evt.getNewValue();
if( state == SwingWorker.StateValue.DONE) {
work2 = null;
}
}
}
});
work2.execute();
}