典型的なJavaアプリはいつ終了しますか?
main
メソッドで新しいスレッドを開始し、main
メソッドが終了しても、他のスレッドが引き続き動作している場合、アプリはすべてのスレッドが終了するまでオンのままですよね?
ありがとう&メリークリスマス!
典型的なJavaアプリはいつ終了しますか?
main
メソッドで新しいスレッドを開始し、main
メソッドが終了しても、他のスレッドが引き続き動作している場合、アプリはすべてのスレッドが終了するまでオンのままですよね?
ありがとう&メリークリスマス!
はい、デーモン スレッドでない限り。スレッド APIからの引用:
Java 仮想マシンが起動すると、通常、単一の非デーモン スレッドが存在します (通常、このスレッドは、指定されたクラスの main という名前のメソッドを呼び出します)。Java 仮想マシンは、次のいずれかが発生するまでスレッドを実行し続けます。
- クラス Runtime の exit メソッドが呼び出され、セキュリティ マネージャが終了操作の実行を許可しました。
- run メソッドへの呼び出しから戻るか、run メソッドを超えて伝播する例外をスローすることにより、デーモン スレッドではないすべてのスレッドが終了しました。
main() 関数は、メイン ユーザー スレッドを定義します。作成した他のユーザー スレッドもある場合があります。これらのスレッドの一部で setDeamon() を呼び出した可能性もあります。
JVM は次の場合に終了します。