我正在尝试对可以在单个 JVM 上运行的最大并发线程数以及创建大量线程所需的时间进行小测试。我有以下简单的代码
public class Threading {
public static void main(String[] args) {
Runnable task = new Runnable() {
@Override
public void run() {
for (int i = 0; i < 100000; i++)
;
}
};
long start = System.nanoTime();
int runs = 1000000;
for (int i = 0; i < runs; i++)
new Thread(task).start();
long time = System.nanoTime() - start;
System.out.printf("Time for task to complete: %.2f seconds", (double) time / 1000000000.0);
}
}
我正在使用 VisualVM 来跟踪活动线程的数量。
我得到的结果似乎很奇怪。我达到的峰值活动线程约为 100,平均活动线程数约为 15。创建 100 万个线程需要 60 多秒。
我在这里做错什么了吗?