是否有人知道将Java进程中的各个线程锁定到特定CPU内核的方法(在Linux上)?我已经在C语言中完成了此操作,但是找不到如何在Java中执行此操作。我的直觉是,这将需要JNI调用,但是我希望这里的某个人可能有一些见识,或者以前曾经做过。

谢谢!

最佳答案

您不能在纯Java中执行此操作。但是,如果确实需要它,则可以使用JNI调用完成此工作的本机代码。这是开始的地方:

http://ovatman.blogspot.com/2010/02/using-java-jni-to-set-thread-affinity.html

http://blog.toadhead.net/index.php/2011/01/22/cputhread-affinity-in-java/

UPD:经过一番思考,我决定为此创建自己的类:ThreadAffinity.java它是基于JNA的,而且非常简单-因此,如果要在生产中使用它,可能应该花一些时间来做它更稳定,但对于基准测试而言,它仍然可以正常工作。

UPD 2:还有另一个library用于在Java中使用线程相似性。它使用与前面提到的方法相同的方法,但是具有另一个接口

09-11 18:53
查看更多