use*_*557 4 java multithreading
Java程序占用的内核数量是否高于线程池的大小?我将线程池大小指定为4,但是我看到我的java代码在一段时间后占用6或7个核心(即顶部显示600).我这台机器上有8个核心.我做错了什么或是java决定在进行多线程时自动使用其他未使用的内核?如果是,是否有办法强制多线程期间使用的核心数量?
我正在使用的代码片段如下所示:
ExecutorService executor = Executors.newFixedThreadPool(4);
for (int i = 0; i < N; i++) {
executor.execute(do something);
}
executor.shutdown();
while (!executor.isTerminated()) {}
Run Code Online (Sandbox Code Playgroud)
JVM使用多个系统线程,如Finalizer线程.运行jconsole,连接到正在运行的应用程序,转到Threads选项卡,您将看到所有正在运行的线程.或者将此代码添加到您的应用中
for(Thread t : Thread.getAllStackTraces().keySet()) {
System.out.println(t);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |