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