2014-10-26 143 views
1

試圖在另一個核執行線程,我用java.util.concurrent.executor如何確保線程在另一個CORE中執行?

我不知道它足以使線程在另一個內核上運行的話,我想在女巫的核心要知道每一次線程執行。

任何想法?

Executor executor = Executors.newSingleThreadExecutor();    
executor.execute(new Runnable() {  
      //some work 
}); 
+1

我不認爲你可以知道哪個代碼運行了一個線程,甚至更少確保它運行在另一個內核上。順便說一句,一個線程可以在多個內核上執行。操作系統調度程序應該足夠聰明,以使用可用的核心。 – 2014-10-26 15:34:06

+0

由於java 1.2,本地線程已被綠色線程取代,所以我不認爲操作系統是線程的多核執行可以支持 – 2014-10-26 15:38:30

+2

@NassimMOUALEK - 我敢肯定這是另一種方式。原生線程在版本1.2/1.3左右替換了JVM中的綠色線程。 – Neil 2014-10-26 15:43:41

回答

1

這是更詳細的這篇文章討論:Java thread affinity

一些代碼彈出here

這個想法是通過通過JNI進行本地調用來設置線程的親和性,並從本機代碼設置親和性。

+0

謝謝,因爲它看起來jvm和操作系統本身處理它,它對我來說OK – 2014-10-26 19:05:20

相關問題