12

main()スレッドで実行されるため。終了するとすぐにmain()、メインスレッドが停止するはずです。したがって、すべてのタスクを実行したmain()後でもまだ終了していない長時間実行スレッドを呼び出した場合。main()が返されたのでmain()、他のスレッドは終了しますか? いいえと思います。しかし、なぜ?

public static void main(String[] s){    
    new LongRunningThread().start();
}
4

3 に答える 3

1

実行時間の長いスレッドがデーモン スレッドでない場合、メイン スレッドが終了しても終了しません。JVM は、Runtime の exit メソッドが呼び出される (および実行が許可される) か、すべての非デーモン スレッドが終了するまで、スレッドを実行し続けます。実行時間の長いスレッドがデーモン スレッドでない場合、JVM は終了しません (つまり、スレッドは引き続き実行できます)。

于 2013-05-07T18:58:30.887 に答える