Javaでぶら下がっているスレッドはどうなりますか?
アプリケーションを作成し、それが複数のスレッドを生成する場合のように。そして、スレッドの1つが終了せず、メインプログラムがその前に終了します。このぶら下がっているスレッドはどうなりますか?スレッドプールに無限にとどまるのでしょうか、それともJVMがしきい値の期間後にスレッドを強制終了するのでしょうか?
Javaでぶら下がっているスレッドはどうなりますか?
アプリケーションを作成し、それが複数のスレッドを生成する場合のように。そして、スレッドの1つが終了せず、メインプログラムがその前に終了します。このぶら下がっているスレッドはどうなりますか?スレッドプールに無限にとどまるのでしょうか、それともJVMがしきい値の期間後にスレッドを強制終了するのでしょうか?
スレッドが「デーモン」としてマークされているかどうかによって異なります。JVMが終了すると、デーモンスレッドは強制終了されます。デーモンではないスレッドがある場合、JVMはまったく終了しません。それらのスレッドが最初に終了するのを待ちます。
デフォルトでは、スレッドは親スレッドのデーモンステータスを取得します。メインスレッドにはデーモンが設定されfalse
ているため、メインスレッドによってフォークされたスレッドもすべてになりますfalse
。スレッドが次のように開始するtrue
前に、デーモンフラグをに設定できます。
Thread thread = new Thread(...);
thread.setDaemon(true);
thread.start();