回答
當JVM發出信號退出時,它運行一個關閉進程,它啓動所有的關閉鉤子線程,然後等待它們完成。由操作系統決定需要等待多長時間,這取決於用於啓動終止進程的方法。如果信號使用Ctrl +過程
public static void main (String[] args) throws InterruptedException {
Runtime.getRuntime().addShutdownHook (new Thread() {
@Override
public void run() {
System.out.println ("Shutdown hook");
while (true) { }
}
});
while (true) {
System.out.println ("Looping");
Thread.sleep (10000);
}
}
C的方法將啓動關閉掛鉤,但從來沒有完成:你可以像一個簡單的測試程序試試自己這一點。如果您在關閉掛鉤中刪除忙環,掛鉤完成後您會看到它終止。
jvm執行關機。寬限期基於操作系統和AFAIK,我們沒有任何控制來配置它。
對不起,您能否詳細說明/重述?如果退出和暫停之間沒有「寬限期」,關閉掛鉤何時運行? – 2011-12-29 17:26:44
謝謝,請編輯您的答案以包含該評論,並將其標記爲已接受。 – 2011-12-29 17:42:48
已編輯。謝謝。 – kosa 2011-12-29 19:29:38
- 1. 如何在關閉之前暫停cmd?
- 2. 在關閉EntityManagerFactory之前添加運行關閉鉤子的Spring/Hibernate
- 3. 允許多個hadoop/EMR任務在關閉之前失敗
- 4. Android - onConfigurationChanged()在暫停之前調用Activity之前調用Activity
- 5. 如何在程序關閉之前「暫停」批處理腳本?
- 6. 在新實例中運行JVM或暫停JVM一段時間
- 7. 暫停和關閉
- 8. log4j2無法註冊關閉掛鉤,因爲JVM正在關閉
- 9. 在執行jQuery動作之前暫停
- 10. 在給定步驟之後,鉤子運行之前的黃瓜?
- 11. 在JQuery AJAX之前暫停
- 12. 使用ExecutorService執行Java關閉鉤子
- 13. 在運行之前驗證查詢將運行多久?
- 14. 如何在Debian中關閉或暫停後運行命令?
- 15. 在調用bean之前關閉Spring ApplicationContext
- 16. 在C中運行/暫停子進程?
- 17. JSON調用運行時暫停功能
- 18. 在調用close之前關閉套接字但不關閉
- 19. iOS - 可以暫停執行,允許主循環運行,然後恢復執行?
- 20. Java關閉掛鉤未運行
- 21. 在$ resource構造url之前運行一個鉤子?
- 22. 在java中運行關機鉤子
- 23. 如何暫停JavaScript來允許渲染
- 24. 暫停執行,直到子對話框關閉
- 25. 如何在執行期間允許暫停shell腳本?
- 26. 允許子程序在父應用程序的窗體上調用Close關閉
- 27. Spring Boot關閉鉤子
- 28. Raspberry Pi Java關閉鉤子
- 29. 允許關閉模式外
- 30. 在Eclipse中每次運行之前關閉Java應用程序
你看過了源代碼嗎? – 2011-12-29 02:34:13
@StephenC請參見[上一個問題]中的評論(http://stackoverflow.com/questions/8663107/how-does-the-jvm-terminate-daemon-threads-or-how-to-write-daemon-threads-that -t/8663314#8663314) – 2011-12-29 02:43:00