スレッドの実験 その2Advertisementスレッドの終了待ち
public class ThreadTest{
public static void main(String args[]){
System.out.println("main開始");
//スレッド A のオブジェクト tha生成
ThreadA tha = new ThreadA();
//スレッド B のオブジェクト tha生成
ThreadB thb = new ThreadB();
System.out.println("スレッド A 起動");
tha.start(); //スレッド A 開始
System.out.println("スレッド B 起動");
thb.start(); //スレッド B 開始
try{
System.out.println("スレッドの終了待ち");
tha.join(); //thaの終了待ち
thb.join(); //thbの終了待ち
}catch(Exception e){
System.err.println(e); //なんかエラーの場合
System.exit(1);
}
System.out.println("main終了");
}
}
class ThreadA extends Thread{
//コンストラクタ
ThreadA(){}
public void run(){
for(int i = 0; i < 10; i++){
System.out.println("スレッドA "
+ (i+1) + " 回目");
}
System.out.println("スレッド A 終了");
}
}
class ThreadB extends Thread{
//コンストラクタ
ThreadB(){}
public void run(){
for(int i = 0; i < 10; i++){
System.out.println("スレッドB "
+ (i+1) + " 回目");
}
System.out.println("スレッド B 終了");
}
}
スレッドのエラーは、たとえばスレッド実行中に割り込まれた場合とか。
結果↓mainの終了が一番最後にきた。 main 開始 スレッド A 起動 スレッド B 起動 スレッドの終了待ち スレッドA 1 回目 スレッドA 2 回目 スレッドA 3 回目 スレッドA 4 回目 スレッドA 5 回目 スレッドB 1 回目 スレッドA 6 回目 スレッドB 2 回目 スレッドA 7 回目 スレッドB 3 回目 スレッドA 8 回目 スレッドB 4 回目 スレッドA 9 回目 スレッドB 5 回目 スレッドA 10 回目 スレッドB 6 回目 スレッド A 終了 スレッドB 7 回目 スレッドB 8 回目 スレッドB 9 回目 スレッドB 10 回目 スレッド B 終了 main 終了流れ。 1.main開始 2.スレッドAとB開始 3.スレッドAとBが終了(mainは待機状態) 4.main終了 Advertisement |
ショートカット・634・634ブログ ・このカテゴリのトップページに戻る ・Incubator(Pukiwiki) ・634ラボ UIコレクションギャラリー ZO-3ジェネレーター サイト検索Y!ログール |