Japanese / English
デーモンスレッド
デーモンスレッドとは、プログラムがスレッドの実行終了を待たないでプログラム終了することができるスレッドのことを デーモンスレッド といいます。
要するにデーモンスレッドが実行中でもプログラムが終了してしまえば、デーモンスレッドは実行されません。

スレッドをデーモンスレッドにするには setDaemon(true) メソッドを実行する必要があります。
以下、スレッドクラスの例を見てください。例では0.01秒ごとに実行中スレッドの名前を出力します。

public class MyThread implements Runnable{
    public void run(){
        for (int i=0;i<10;i++){
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName());
        }
    }
}
以下のTESTクラスでは、上記スレッドクラスをインスタンス化し、スレッドを実行している例です。

public class TEST {
    public static void main(String[] args){
        MyThread thread1 = new MyThread();
        
        Thread th = new Thread(thread1);
        th.setDaemon(true);//デーモンスレッドにする
        th.start();
        
        System.out.println("状態: " + th.isAlive());
    }
}
上記、Javaアプリケーションを実行すると、1秒ごとにスレッド名が表示され、結果は以下のようになります。
プログラムがデーモンスレッドの実行中に停止しているため、スレッド名が3回出力後プログラムが終了していることがわかります。

状態: true
Thread-0
Thread-0
Thread-0
start()メソッドを呼ぶ前にsetDaemon(false)にすればデーモンスレッドではなくなるため(start()メソッドを呼んだ後にsetDaemon()メソッドを呼ぶと例外がthrowされる。)、全てのスレッドが終了すると同時にプログラムが終了されるようになります。
このようにプログラムがスレッドの実行終了を待つようなスレッドを ユーザスレッド と言います。
ちなみにデフォルトはユーザスレッドです。

Back to top

Information
Information
社長ブログ


運営サイト




広告



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