所以我有一个“棘手”的问题,我想看看人们的意见。
我正在编写一个组件,它扩展了一个 JPanel 并做一些自定义的东西。在那个组件里面我有一个线程,它像这样永远循环:
//chat thread
Thread chat_thread = new Thread(new Runnable(){
public void run(){
while(true){
//get chat updates
}
}
});
chat_thread.start();
那么问题来了,当组件被方法从其父组件中移除时remove()
,这个线程是否还活着,或者当你移除组件时它会死掉?
编辑:
感谢大家的回复,确实线程并没有终止删除它的启动器,所以为了从另一个组件终止这个线程,我做了以下事情:
Set<Thread> t = Thread.getAllStackTraces().keySet();
Iterator it = t.iterator();
while(it.hasNext()){
Thread t2 = (Thread)it.next();
if(t2.getName().equals("chat_thread")){
t2.interrupt();
}
}
首先使用 Thread.setName() 方法为我的线程创建一个名称。谢谢!