我注意到我創建的一個ExecutorService
對象的一些線程具有「本機」狀態。 「本地」是什麼意思? Eclipse中的線程狀態是「native」DDMS
2
A
回答
6
在java中,你有2種類型的線程,綠色線程和本地線程。
綠色和本地線程都是支持Java程序的多線程執行的機制。一些JDK發行版(如Blackdown's)包含使用任一種線程運行的選項。
本機線程使用操作系統的本機功能來管理多線程進程 - 特別是,它們使用pthread庫。當你使用本地線程運行時,內核會安排和管理組成該進程的各個線程。
綠色線程模擬多線程環境而不依賴任何本機操作系統功能。他們在管理和調度線程的用戶空間中運行代碼; Sun編寫了綠色線程以使Java能夠在沒有本地線程支持的環境中工作。
有在Linux環境中使用兩個之間的重要差別:
本地線程可以先發制人線程之間切換,在任何時間從一個正在運行的線程切換控制至非運行的線程。綠色線程僅在線程(Thread.yield(),Object.wait()等)明確放棄控制或線程執行阻止操作(read()等)時切換。
在多CPU機器上,本地線程可以通過將不同的線程分配給不同的CPU來同時運行多個線程。綠色線程只能在一個CPU上運行。
本地線程創建許多Java進程正在運行的外觀:每個線程在進程表中佔用其自己的條目。這些線程都是同一進程的線程的一個線索是,所有線程的內存大小都是相同的 - 它們都使用相同的內存。
不幸的是,這種行爲限制了Linux在Linux上的可伸縮性。進程表不是無限大,進程只能在用完系統資源或達到配置的限制之前創建有限數量的線程。
相關問題
- 1. 線程狀態在Eclipse中爲「monitor」DDMS
- 2. Android DDMS線程
- 3. 線程池中的線程狀態
- 4. 線程狀態
- 5. 狀態的線程
- 6. eclipse調試器中詳細的java線程狀態?
- 7. 當幾乎所有線程都處於NATIVE狀態時線程轉儲問題
- 8. pthread線程狀態
- 9. DDMS在eclipse中不工作
- 10. 線程,wxPython的和狀態
- 11. React Native中的全局狀態
- 12. React-native中的陣列狀態更新
- 13. Log4j2 AsyncLogger總是線程等待狀態
- 14. 什麼是Dalvik線程狀態?
- 15. Crashlogs:什麼是「ARM線程狀態」
- 16. Java JVM分析,線程狀態 - 「Monitor」狀態是什麼意思?
- 17. React-native/Redux - 錯誤狀態
- 18. React Native Debugger狀態undefined
- 19. 多線程工作線程狀態
- 20. 在Linux中的線程狀態
- 21. UML狀態機圖中的線程?
- 22. 它是多線程時的進程狀態是什麼?
- 23. 在React Native中未打印狀態
- 24. 獲取線程狀態
- 25. C#:查詢線程狀態
- 26. WPF UI線程狀態
- 27. 多線程邏輯狀態
- 28. 多線程(無狀態類)
- 29. 的Eclipse RCP setSaveAndRestore狀態是不工作
- 30. 調用後的python中的線程鎖狀態是什麼subprocess.popen
非常感謝!但我已閱讀[這裏](http://en.wikipedia.org/wiki/Green_threads#Green_threads_in_the_Java_virtual_machine)。在JVM中,[5]至少在Solaris上。由於綠色線程與本地線程相比有一些限制,隨後的Java版本將它們放棄以支持本地線程。所以,自Java 1.1以來,我們一直沒有處理綠色線程,但只處理本地線程。 –