所以我有一个“棘手”的问题,我想看看人们的意见。关于java线程生存期
我在编写一个组件,它扩展了一个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()方法为我的线程命名。 谢谢!
线程在中断时不会死亡。如果你中断了它,它会中断,如果它在中断时决定停止运行。 –