デーモン スレッドについて私が知っていることは、実行中のユーザー スレッドがなく、残りのすべてのスレッドがタイプ デーモンである場合、JVM は終了するということです。
以下のプログラムを実行すると、出力は常に最初の行として「メインスレッドの終了」として表示され、「Hello from Worker 0」などの出力がさらに数行まで表示されます。
私の質問は、ワーカースレッドがデーモンとして設定されている場合、メインスレッドが終了すると、ワーカースレッドは終了し、先に進まないはずですが、「Hello from Worker 0」と行の息子が出力され、しばらくするとJVMのみが終了するのはなぜですか?このように振る舞っていますか?
私の質問が有効でない場合は申し訳ありませんが、答えを知りたいのですが、疑いがあります。
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
new WorkerThread().start() ;
System.out.println("Main Thread ending") ;
}
}
class WorkerThread extends Thread {
public WorkerThread() {
setDaemon(true) ;
}
public void run() {
int count=0 ;
while (true) {
System.out.println("Hello from Worker "+count++) ;
count++;
}
}
}
出力
Main Thread ending
Hello from Worker 0
Hello from Worker 2
Hello from Worker 4
Hello from Worker 6
Hello from Worker 8
ありがとう