トップページ >  Java >  デーモンスレッド
初版2006/08/30: 最終更新日2006/08/30
  デーモンスレッド
目次
デーモンスレッド
デーモンスレッド
デーモンスレッドとは、プログラムがスレッドの実行終了を待たないでプログラム終了することができるスレッドのことを デーモンスレッド といいます。
要するにデーモンスレッドが実行中でもプログラムが終了してしまえば、デーモンスレッドは実行されません。

スレッドをデーモンスレッドにするには 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される。)、全てのスレッドが終了すると同時にプログラムが終了されるようになります。
このようにプログラムがスレッドの実行終了を待つようなスレッドを ユーザスレッド と言います。
ちなみにデフォルトはユーザスレッドです。

Information
リンクについて
個人情報保護方針
Yahoo!ブックマークに登録

社長&社員ブログ
やる気はあるがお金がない㈱コンフレッジブログ

slot大好きな㈱コンフレッジ社員のブログ
広告

サイト内検索
当サイト内を検索できます↓


PV