我在研究操作系統概念時學到了兩種類型的線程:內核級和用戶級。可以在多處理器環境中執行Java線程嗎?
我還了解到,內核級線程或進程也可以在多處理器環境中執行。
我對Java線程(作爲用戶級線程)有基本的疑問, 我們可以使用它們在多處理器環境中執行嗎?
我在研究操作系統概念時學到了兩種類型的線程:內核級和用戶級。可以在多處理器環境中執行Java線程嗎?
我還了解到,內核級線程或進程也可以在多處理器環境中執行。
我對Java線程(作爲用戶級線程)有基本的疑問, 我們可以使用它們在多處理器環境中執行嗎?
首先答案是肯定的。您可以通過在java中創建多個線程來利用多核處理器的全部功能。
據我所知,jvm採用了混合線程模型,包括內核線程和用戶線程。它有一個策略來決定何時創建哪種類型的線程。我相信當系統資源豐富時,它往往會創建內核線程並分配java線程對象來運行它。
聽起來像你談論的是好的舊Java 1.1「綠色線程」。這是操作系統沒有本地線程支持或至少沒有穩定的支持的一大困惑。至少在討論Oracle的參考實現時,此功能在當前的JVM實現中不再存在。 Java線程始終是這些JVM上的內核線程。
所以答案是肯定的,Java線程將受益於SMP,即多核CPU。它要求操作系統具有本地線程實現,但如果沒有它,整個SMP計算機就沒有多大意義。 JVM必須能夠使用它,在所有常見系統中都是如此。
使用fork-join框架來處理多處理器。 – Masudul