Hazelcast:具有多 CPU 台机器的集群上的线程数

Hazelcast: number of threads on a cluster with multi CPU machines

我使用 Hazelcast 创建了一个集群:它有一个主节点,将 Runnables 分布在其他 5 个节点中。我的问题是:Hazelcast ExecuterService 是否也在每个计算节点内并行执行计算?

我的意思是,如果我的每个计算节点有 4 个 CPU(或单个 CPU 上有 4 个核心),那么参与计算的线程总数是多少? 5(每个节点的线程)或 5*4=20(每个 CPU/core 的线程)?

您的 运行nable 发送给成员将 运行 每个成员一次,这意味着它将仅使用单线程。所以 5

好吧,我们可以手动解决:

public class HazelcastTest {

    @Test
    public void test() {
        HazelcastInstance instance = Hazelcast.newHazelcastInstance();

        IExecutorService exec = instance.getExecutorService("exec");
        for (int i = 0; i < 100; i++) {
            exec.submit(new MyRunnable());
        }
    }

}

public class MyRunnable implements Runnable, Serializable {

    @Override
    public void run() {
        long threadId = Thread.currentThread().getId();
        System.err.println("threadId: " + threadId);
    }

}

结果是:

threadId: 48
threadId: 48
threadId: 46
threadId: 48
threadId: 46
threadId: 48
threadId: 46
threadId: 46
threadId: 54
threadId: 48
...etc...

另一个证据是 CPU 监视器显示所有可用内核的负载为 100%。