@634

スレッドの実験 その2

Advertisement

スレッドの終了待ち

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!ログール