だから私は「トリッキーな」質問をしています。人々の意見を見たいのです。
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() メソッドでスレッドの名前を作成します。ありがとう!