※ ChatGPTを利用し、要約された質問です(原文:Threadの終了)
Threadの終了方法についての質問
このQ&Aのポイント
JavaのThreadを終了させる方法についての質問です。
スレッドblinker内でループが回っていない場合にThreadを止める方法を教えてください。
ClassAで表示されたGUIを閉じる前にThreadを終了させたいですが、ループを回すことができずに困っています。
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/index.html
を見ると,スレッドの止め方が書いてありますが,
これは,スレッドblinker内でループが回っていて初めてうまく行く,
と(間違ってるかもしれませんが)理解しています.
では下記のように,Thread2でループが回っていない場合は
(*)の位置でThread2を止めるにはどうすればいいのか,
教えてくださる方はいらっしゃいませんでしょうか.
(**)のClassAではSWTでGUIを表示させていて,
それをThread1から閉じるというのが目的です.
GUIを閉じない限りその先には進まないので,
ループを回しThread2のrun()内で待機させることが出来なくて.
public class Thread1 {
Thread1(){
Thread2 t2 = new Thread2();
t2.start();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
(*)ここでThread2を終了させたい.
}
public static void main(String args[]){
new Thread1();
}
class Thread2 extends Thread {
public void run() {
new ClassA(); ・・・(**)
}
}
}
お礼
どうもありがとうございました. 今回書かせて頂いた例ではThread1で5秒の停止をしておりますが, 実際はそこで様々な処理(要する時間は予測不可能)をしており, それが終わり次第Thread2で立ち上げているGUI(ダイアログ的に使用しています)を閉じたいのです. Thread2で立ち上がっているGUIを閉じないと Thread2は終わらないのですが, Thread2の状態に関わらず即座に終了させたいので, 他スレッドから止める方法を探していた次第です. 方法はなさそうなので,stop()による停止を検討してみます.