0
我使用swing工作线程在后台模式下加载数据。例程的简化版本如下。重要的部分是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();
}
SwingWorker被指定用于Swing /或者脏窍门是初始化EDT – mKorbel