我運行了一個非常簡單的單線程Java程序。當我使用Ubuntu下的命令檢查線程時,它顯示在OS級別有14個線程。我期望當程序有一個線程時只有一個線程,如果程序有x個線程,就有x個線程。我的期望錯了嗎?當我運行單線程Java程序時,爲什麼在操作系統級別有多個線程?
5
A
回答
10
JVM有自己的線程,比如垃圾回收器。試着在它上面做一個kill -3 <pid>
,它會顯示你所有的線程。
1
我相信Java虛擬機在啓動時總是會打開多個操作系統線程,這就是爲什麼你會看到你所看到的。另外,我不確定Java Thread類是否使用本地線程。
+0
幾乎每個主流jvm都使用原生線程。 – jtahlborn 2011-06-17 13:25:46
2
JVM有多個線程在運行。這就是你看到這麼多線程的原因。
相關問題
- 1. 爲什麼單線程java程序有這麼多的線程?
- 2. forkIO線程和操作系統線程
- 3. 如何在單線程中使用java實現多線程操作系統?
- 4. 進程和線程在操作系統
- 5. Java線程和操作系統線程之間的通信
- 6. 無效Java線程和本地操作系統線程
- 7. 是否多線程Java進程比操作系統的單線程程序更經常地調度?
- 8. 爲什麼我的多線程執行是單線程模式
- 9. Java多線程系統
- 10. 爲什麼我的C#應用程序在多線程單元上運行?
- 11. 爲什麼在單線程,雙線程和三線程程序中運行ExecutorService的時間相同?
- 12. 實時嵌入式操作系統的線程調度程序
- 13. 時間多線程和超線程之間有什麼區別?
- 14. 當新線程立即操作UI時,爲什麼沒有CalledFromWrongThreadException?
- 15. 我該如何要求操作系統在另一個內核上運行每個線程? - Linux操作系統
- 16. 單程序操作系統
- 17. 爲什麼我的多線程插入程序比單個線程插入程序執行得更好?
- 18. 爲什麼當我運行多線程的方法比較慢?
- 19. 運行Java多線程進程,頂部顯示單線程
- 20. 移植的windows線程在Android操作系統上運行
- 21. 單線程線程安全級別
- 22. 從多線程程序調用系統()
- 23. java編程和java單線程多線程問題(單線程與多線程)
- 24. 系統線程vs非系統線程
- 25. 爲什麼我的多線程程序按順序執行?
- 26. 操作系統線程在Go程序中
- 27. 在我的操作系統中運行兩個應用程序
- 28. 多線程程序運行速度慢於單線程
- 29. Linux操作系統:系統()+ SIGCHLD處理多線程+
- 30. java線程在運行多線程時不會中斷
*我的期望錯了嗎?*是非常錯誤的。 – bestsss 2011-06-17 13:43:21