JAvaデーモンスレッドの理解

1463 ワード

デーモンスレッドと通常のスレッドの唯一の違いは、次のとおりです.
理解1:デーモンスレッドはmainが共生共死であり、mainが終了すると終了し、通常のスレッドはタスクの実行が終了してから停止する.
理解2:ユーザースレッド:Java仮想マシンは、すべての非デーモンスレッドが離れた後に自動的に離れます.デーモン・スレッドは、ユーザー・スレッドにサービスを提供するために使用され、他のユーザー・スレッドが実行されていなければ、サービス可能なオブジェクトがなく、継続する理由もありません.
例えば、私たちがよく知っているJavaゴミ回収スレッドは典型的なデーモンスレッドであり、私たちのプログラムに実行中のThreadがなくなった場合、プログラムはゴミを発生せず、ゴミ回収器も何もできないので、ゴミ回収スレッドがJava仮想マシンに残っているスレッドである場合、Java仮想機会は自動的に離れます.
テストコード:
スレッド
public class ThreadDemo implements Runnable {
     public void run() {
	  while (true) {
            for (int i = 1; i <= 100; i++) {
                System.out.println(i);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
              }
	   }    
	}
}
public class Test {
	public static void main(String[] args) {
		Thread daemonThread = new Thread(new ThreadDemo());
		daemonThread.setName("  thread");
		//        
                daemonThread.setDaemon(true);
                daemonThread.start();
                System.out.println("isDaemon = " + daemonThread.isDaemon());
                Thread t = new Thread(new ThreadDemo());
                t.start();
	}
}

スレッドtが存在するため、デーモンスレッドdaemonThreadは常に実行され、次のコードを注釈すると、デーモンスレッドdaemonThreadはmainが終了するにつれて終了する.
Thread t = new Thread(new ThreadDemo());
t.start();