Japanese / English
スレッドの停止を待つ
スレッドの停止を待つには join() メソッドを使用します。
下記のようにスレッドの状態を調べてfalseとなる間でループするのも一つの方法ですが、これは無限ループ中でisAlive()メソッドを繰り返し実行しているため、負荷がかかります。
このため、スレッドの停止を待つにはjoinを使用します。
以下、スレッドクラスの例を見てください。例では実行中スレッドの名前を出力します。

public class MyThread implements Runnable{
    public void run(){
        for (int i=0;i<10;i++){
            System.out.println(Thread.currentThread().getName());
        }
    }
}
以下のTESTクラスでは、上記スレッドクラスをインスタンス化し、スレッドを実行しています。
そのあとjoin()メソッドを使用してスレッドが終了するまでmainのスレッドを止め、スレッドの実行が終了した時点でjoin()以下に進み、スレッドの状態を標準出力しています。

public class TEST{
    public static void main(String[] args){
        MyThread thread1 = new MyThread();
        
        Thread th = new Thread(thread1);
        th.start();

        try {
            th.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("状態: " + th.isAlive());
    }
}
上記、Javaアプリケーションを実行すると、スレッド名が表示され、スレッドが実行終了するとjoin()メソッド以下に進み、スレッドの状態が表示されます。
出力結果は以下のようになります。

Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
状態: false

Back to top

Information
Information
社長ブログ


運営サイト




広告



Google Search
PV
SEO対策 大阪  税理士 相談  税理士 守口市  税理士 大阪市  税理士 枚方市  自動車ガラス 神戸  シール印刷 神戸  ブリリアントアパートメント  株式会社CONFRAGE  英会話 個人レッスン 京都市右京区  京都市右京区西京区でマンツーマン英会話 
このページはCONFRAGEの著作物です。このページを複製・転載することを禁じます。CopyRight(C)2003-2016 CONFRAGE All rights reserved.