私は、System.exit(0)を呼び出すメソッドを呼び出す終了ボタンを持つスイングアプリケーションを持っています。 JVMは何らかの理由でシャットダウンしません。誰でもJVMを実行し続ける原因を知っていますか?スイングアプリケーションの終了後にJVMがシャットダウンしない
答えて
非デーモンスレッドでは、System.exit()
(とデーモンスレッドは確かにそうではありません)を呼び出すと、プログラムが終了しないようにしますが、シャットダウンフック†は、終了に失敗した場合に実行されます。
† Design of the Shutdown Hooks APIを参照してください(最初にリンクされた記事は現在the wayback machineでのみ利用可能です)。
スイングはおそらくシャットダウンフックを使用しますが、プログラムの終了を妨げるような方法ではありません。しかし、あなた(またはあなたが使っているライブラリ)がRuntime.addShutdownHook()
を呼び出す場合は、シャットダウンフックがデッドロックしないようにしてください。
ところで、この問題の回避策の1つは、シャットダウンフックを追加して、60秒待ってからRuntime.halt()
を呼び出す別のスレッドを停止させることです。 (そうでなければ、シャットダウンフックは60秒待ってからプログラムが60秒間終了するのを防ぐため、別のスレッドをスピンオフする必要があります)。
スレッドがまだ実行されている可能性がありますか?
実行中のスレッドと実行中のスレッドを見つけるのは簡単です。 Netbeansでは、プロファイルモード(Alt + F2)でプロジェクトを開始し、リアルタイムでスナップショットを作成します。 (プロファイラ - >表示 - >スレッド)
また、SunのJVMに付属するJVisualVMまたはその前身JConsoleを使用することもできます。特にJConsoleには、スレッドタブの下部に便利な「デッドロック検出」ボタンがあります。 –
「デッドロックの検出」ボタンについてはわかりませんでした。時には役に立つかもしれません!ありがとう! –
- 1. Eclipseは(JVMが終了し、終了コード= 1。)起動しない
- 2. デーモンスレッドが完了しないうちにJVMが終了しない
- 3. OutOfMemoryErrorの後にJVMが終了します
- 4. C#プログラムが終了した後にコンソールが終了しない
- 5. メソッドの終了後にonMapReady()の代入が終了しない
- 6. テスト後にXcodeが終了しない
- 7. Android:シャットダウン後にAlarmManagerが強制終了される
- 8. AndroidデバイスモニタJVM終了終了コード2
- 9. IBM RADは "JVMが終了コード8096を終了し、"
- 10. JFrameにアクセス中にJVMが終了コード1で終了しました
- 11. 終了メニューと終了イベントを使用してアプリケーションをシャットダウン
- 12. javacがMacOSで終了してもJavaプロセスがシャットダウンしないX
- 13. スレッド終了の問題(C):最後のスレッドが終了しない
- 14. azureのシャットダウン動作の終了
- 15. アプリが終了したときにアプリが終了しない
- 16. 複数のゲームの後にプログラムが終了しない?
- 17. JVMが終了しました。終了コード= -1 birtデザイナーファイルを開くときにエラーが発生しました
- 18. macOSアラートが閉じた後にサブプロセスが終了しない
- 19. アプリプロセスが終了した後にフラグメントが復元されない
- 20. tkinterの終了ボタンを押した後にプロセスを終了できない
- 21. タスクがプロセス終了前に終了していない
- 22. プログラムの終了時にプロセスが終了しない
- 23. 終了時にJavaFXアプリケーションのタスクマネージャプロセスが終了しない理由
- 24. 大容量ファイルのダウンロード後にPHPスクリプトが終了しない
- 25. return文の後にメソッドが終了しない
- 26. プログラムの終了後にDBが永続しない
- 27. プロジェクト終了後にEFデータの移行が機能しない
- 28. エラー後にマルチスレッドの電子プロセスが終了しない
- 29. プロシージャの実行後にExcelが終了しない
- 30. 関数の実行後にPythonスクリプトが終了しない
終了時にデーモン以外のスレッドが実行されていますか? –
[何がSystem.exit()の後にJavaを実行し続ける可能性がありますか?](http://stackoverflow.com/questions/2614774/what-can-cause-java-to-keep-running-after-system -exit) –