gpt4 book ai didi

java - 为什么占用的核心数高于线程池大小?

转载 作者:搜寻专家 更新时间:2023-11-01 02:25:39 25 4
gpt4 key购买 nike

Java程序占用的核心数大于线程池的大小是不是有原因?我将线程池大小指定为 4,但我发现我的 java 代码在一段时间后占用了 6 或 7 个内核(即 top 显示 600)。我在这台机器上有 8 个内核。我做错了什么还是java决定在多线程时自动使用其他未使用的内核?如果是,是否有任何方法可以强制在多线程期间使用的内核数?

我使用的代码片段如下所示:

ExecutorService executor = Executors.newFixedThreadPool(4);
for (int i = 0; i < N; i++) {
executor.execute(do something);
}
executor.shutdown();
while (!executor.isTerminated()) {}

最佳答案

JVM 使用多个系统线程,例如 Finalizer 线程。运行 jconsole,连接到您正在运行的应用程序,转到线程选项卡,您将看到所有正在运行的线程。或者将此代码添加到您的应用中

    for(Thread t : Thread.getAllStackTraces().keySet()) {
System.out.println(t);
}

关于java - 为什么占用的核心数高于线程池大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23798162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com