java - 在 Java 中,如何创建线程以便每个线程都专门运行在一个内核中?

标签 java multithreading cpu

<分区>

Possible Duplicate:
Java thread affinity

我有一台服务器,它有一个 16 核 cpu。

在Java中,我需要创建一些线程(线程数小于16)。每个线程都需要运行一些操作,例如,处理一个事件队列。

如何创建这些线程以保证每个线程永远分配给一个核心?我的意思是我不希望操作系统为一个线程交换内核。我只希望一个线程专门运行在一个固定的内核上。

我可以这样做吗?


我想要这个的原因是

我在同一台服务器上处理一些后台任务(计算密集型)和一些面向用户的任务。我不希望用户端受到任何负面影响。例如,如果我的计算任务被分配到 16 个核心,那么用户端运行的线程肯定会受到负面影响,对吧?

最佳答案

你不能。 JVM 虚拟化所有硬件,因此您不能做那样的事情。

可能有一些“技巧”适用于某些特定的体系结构和某些特定的 JVM,但它们都是骇人听闻且不可靠的。

关于java - 在 Java 中,如何创建线程以便每个线程都专门运行在一个内核中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10446710/

相关文章:

c++ - 整数和寄存器大小之间有关系吗?

java - 检查字符数组

java - 任何可以按照 ANSI x12 和 UN/EDIFACT 标准解析 EDI 文件的开源 Java 库?

java - log4j 干扰 - 级别一直设置为 "OFF"

java - Tomcat 7 启动Web App失败并抛出java.lang.RuntimeException : Illegal type for StackMapType: -89

java - 将锁定计数设置为大于 1 的值

python - 使用 boost.python 实现真正的多线程

c++ - Win32 C++ : Get process CPU affinity?

java - 对于 Java 中的生产者-消费者来说,什么是更好的习惯用法?

android - 有什么方法可以计算当前 android 版本的 CPU 负载吗?