下面的类似乎始终报告2542个线程是最大可能的,无论分配给应用程序的内存如何。 什么限制了这里的线程数量?内存,CPU,内部JVM设置?
由于
public static void main(String... args) {
int taskNumber = 0;
while (true) {
try {
new MyThread().start();
} catch (OutOfMemoryError e) {
System.out.println("Thread " + taskNumber+" could not be created.");
System.exit(0);
}
taskNumber++;
}
}
答案 0 :(得分:4)
您的操作系统限制了它可以处理的线程数。
要获取号码,请在您的计算机上执行相应的命令:
Linux:sysctl kernel.threads-max
Mac OSX:sysctl kern.num_threads
ADDITION :也许您可以在此主题中找到一些有趣的答案:How many threads can a Java VM support?
答案 1 :(得分:2)
对于本机线程,限制在JVM进程的基础操作系统资源分配中。
对于绿色线程,限制在JVM实现中,但它在单个本机线程上运行。