有没有人知道如何锁定Java进程中的单个线程到特定的CPU核心上(在Linux系统下)?我已经在C语言中实现了这一功能,但无法找到Java的实现方法。我的直觉是需要进行JNI调用,但我希望这里的某个人可能有一些见解或以前做过。
谢谢!
有没有人知道如何锁定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,并且非常简单--因此,如果您想在生产中使用它,可能需要花些时间使其更加稳定,但对于基准测试和测试,它可以正常工作。我知道已经过了一段时间,但如果有人遇到这个问题,请看我是如何解决的。我编写了一个脚本,它会执行以下操作: