什么限制了Java应用程序中创建的线程数?

时间:2014-03-30 12:39:23

标签: java multithreading jvm

下面的类似乎始终报告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++;
    }
}

2 个答案:

答案 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实现中,但它在单个本机线程上运行。