java是什么 Java:關(guān)于多線程與多核,如何將多核都利用上呢?
Java:關(guān)于多線程與多核,如何將多核都利用上呢?您可以編寫一個多線程程序來運行。打開任務(wù)管理器,打開“性能”選項卡,然后觀察。事實上,不管你有4個核,8個核,或者1024個核,你基本上在同一個網(wǎng)格中
Java:關(guān)于多線程與多核,如何將多核都利用上呢?
您可以編寫一個多線程程序來運行。打開任務(wù)管理器,打開“性能”選項卡,然后觀察。事實上,不管你有4個核,8個核,或者1024個核,你基本上在同一個網(wǎng)格中有動作。這與多線程在多個內(nèi)核中運行的理論是不一致的。這是由操作系統(tǒng)本身的設(shè)計引起的。雖然核多縣多,但多線程多核運行的算法模式還沒有真正設(shè)計出來。操作系統(tǒng)對如何利用它有最終決定權(quán)。別再想了。
對于多核CPU java中Thread.currentThread() 指的是哪個核上的線程?
Java線程類庫不提供任何獲取CPU核心信息的API。
如上圖所示,Java使用操作系統(tǒng)的輕量級進(jìn)程接口實現(xiàn)線程,輕量級進(jìn)程與內(nèi)核線程一一對應(yīng)。內(nèi)核線程由操作系統(tǒng)調(diào)度并分配給CPU內(nèi)核執(zhí)行。換句話說,Java虛擬機(jī)不直接調(diào)用CPU,而是將任務(wù)提交給操作系統(tǒng),由CPU的內(nèi)核執(zhí)行線程。
在大多數(shù)情況下,Java程序不需要關(guān)心線程由哪個CPU核心執(zhí)行,因為Java程序不會對操作系統(tǒng)的線程調(diào)度產(chǎn)生任何影響,除非使用JNI調(diào)用一些底層操作。在這種情況下,不能使用Java自己的線程類庫來檢查問題。