簡體   English   中英

JVM中有多個線程-它們何時使用多個內核?

[英]Multiple threads in JVM - when are they using multiple cores?

最近,我有機會聽了關於JVM的另一個討論。 據說Java虛擬機在並發方面構建良好。 對於一個我認為簡單的問題,我找不到任何令人滿意的答案:當JVM運行多線程(並因此使用多個虛擬內核,對嗎?),它是否利用了計算機CPU的多個真實內核?

我聽到“並非總是”或“有時”作為答案; 那么有什么方法可以確保當我們設計代碼以運行多個線程時,JVM也將使用CPU的多個核心嗎? 或以其他方式,由什么決定JVM是否使用多核CPU內核?

我真的無法給出何時需要這樣做的示例,但是我發現它很有趣,因為我知道設計師更喜歡項目中所有具有確定性的東西。 如果真正不能對它們進行並行計算,那么在某些大型應用程序中擁有多個線程的真正意義是什么?

Java線程與常規線程一樣, 可以安排使用多個內核。 關於並發編程的真正棘手的事情是,很難“強制”程序使用X個內核,並使該線程在該內核上運行,等等。換句話說,是確定性的。

最終取決於操作系統以及某種程度上的硬件。 但最終,程序員應該抽象地考慮並發編程,並相信調度程序正在完成其工作。

換句話說,是的。

在所有主流的現代jvm中,java線程都是“真正的”操作系統線程,因此,就像任何其他OS線程一樣,它們將跨內核調度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM