「如果最後一個非守護進程線程已完成,虛擬機將終止。」 我的問題是,應用程序產生的守護程序線程會發生什麼?爲什麼JVM不會等待它們完成?爲什麼JVM不會等待用戶應用程序產生的守護進程線程?
0
A
回答
8
守護進程線程的整個目的是,如果它是唯一運行的線程,它不會讓JVM保持活動狀態; 這是由設計。您可能希望這樣做的原因有很多。
例如,對於Swing應用程序,用戶可能已經在後臺守護程序線程(而不是在事件分派線程上)上調用了長時間運行的任務。在完成任務之前,用戶嘗試退出應用程序。在這個階段,應用程序開發人員可能已經決定立即關閉應用程序,而不是關閉嘗試延遲直到長時間運行的計算完成爲止,因此決定分配計算線程守護進程狀態的原因是更好的。
+0
但是「守護線程會發生什麼?」呢?我猜沒有任何反應。它只是停止運行... – Ringding
+0
程序停止執行後,守護程序線程是否真的停止工作?我的意思是這就像說守護線程取決於主線程的存在。這是真的嗎? –
1
因爲它們是守護線程。這就是它的意思。這並不意味着什麼。
相關問題
- 1. 等待守護線程掛起應用
- 2. 用Clojure/JVM守護進程
- 3. 扭曲:從另一個應用程序守護進程產生應用程序守護進程
- 4. 如果非守護進程線程正在等待守護進程,
- 5. 守護進程線程終止於jvm
- 6. JVM不會退出,直到守護進程線程未完成
- 7. Monotouch守護進程應用程序
- 8. 爲什麼不是sidekiq守護進程?
- 9. 在生產中運行應用程序dist作爲守護進程
- 10. 使用轉換用戶線程 - >守護程序線程
- 11. java守護進程線程
- 12. 爲什麼VisualVM在Linux上不顯示守護程序線程?
- 13. 爲什麼主線程會等待
- 14. 守護線程什麼時候有用?
- 15. 在創建守護進程時,離開調用setsid()會產生什麼影響?
- 16. SimpleHTTPServer推出作爲一個線程:不會守護進程
- 17. 守護進程線程什麼也不做
- 18. 期待不會等待產生的進程
- 19. 守護程序線程 - 使用案例
- 20. 當我將python線程設置爲守護進程時,它會產生什麼區別
- 21. 守護程序線程阻止JVM終止 - 可能的原因?
- 22. 如何從nodejs中的守護進程產生gpg子進程?
- 23. 使Ruby程序成爲守護進程?
- 24. 守護程序線程不止一個?
- 25. 如果我調用WaitHandle.Dispose(),等待線程會發生什麼?
- 26. 在java中的守護進程線程
- 27. 在守護進程線程中創建的進程的主線程是守護進程本身嗎?
- 28. 守護線程
- 29. Java中的守護進程和非守護線程優先級
- 30. Hadoop守護程序的用戶帳戶
可能重複的[當主線程停止在java?](http://stackoverflow.com/questions/7416018/when-is-the-main-thread-stops-in-java) – paulsm4
因爲那會打敗守護線程的「特殊」性質。 .NET更明智地稱它們爲前臺線程(非守護進程)和後臺線程(守護進程),其中一個活動的前臺線程(非守護進程)將使後端線程(後臺進程)不會保持虛擬機處於活動狀態。 – 2011-10-10 07:33:19