2014-12-05 12 views
0

我的系統是7核心CPU機器。我只是嘗試運行下面的程序所有處理器使用率如何在多線程中成爲100%

for(int i=0;i<10; i++) 
{ 
     new Thread(new Runnable() 
     { 
      @Override 
      public void run() 
      { 
       while (true) 
       { 

       } 
      } 
     }).start();; 
    } 

現在我的完整CPU使用率是100%(7個核心是100%)。這裏有10個線程在單進程javaw.exe中。它如何在我的所有CPU內核中分裂?

單個進程是否可以在多個內核中運行,或者java實現是否照顧在不同處理器之間提供線程?

+0

7核心CPU?從來沒有聽說過。 – 2014-12-05 06:12:34

+2

附註。英特爾i7處理器沒有7核心 – arunmoezhi 2014-12-05 09:43:18

+0

@arunmoezhi哦。新的信息給我..謝謝。 – Sangeeth 2014-12-05 10:12:43

回答

1

是的,同一進程的多個線程可以分割到多個CPU中。對於許多應用程序來說,這是使用多個線程的關鍵。

當前大多數JVM實現都使用本地操作系統線程(一個Java線程 - 一個操作系統線程),所以這些操作都是由操作系統完成的。替代方案是「green threads」,JVM將手動調度執行。對於沒有「真正」線程的體系結構或操作系統來說,這似乎已成爲過去。

0

據我所知,這是OS的線程調度功能的一個功能。 但是,您不能以這種方式運行併發操作。

+1

'你不能以這種方式運行併發操作' - 錯......你可以。運行併發操作是重點。 – 2014-12-05 12:36:23

+0

哦,我的不好,我不擅長這個。 :P. – Red 2014-12-09 18:42:12

相關問題