2014-10-26 139 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

相关问题