Java中的许multithreading是否存在硬限制?

一些 消息来源说,你对Java中的一些线程(如15k或30k)有一个硬限制,即使你没有操作系统上限和无限制的RAM。 我还听说,在Java 7中,这个限制被解除了。 两个陈述都是真的吗?

Java虚拟机规范未指定线程数限制。 它们通常受可用堆栈空间量的限制,因为每个线程都有自己的私有堆栈。 (无法分配堆栈通常会在尝试创建新线程时触发OutOfMemoryexception。)我相信线程池和其他机制也可用于限制线程数。 (例如, Sun Java System Portal Server使用它来限制事务数量。)

不同的虚拟机实现可能会施加其他约束。 例如,BlackBerry OS将非系统线程限制为每个应用程序16个,总计64个。 我预计其他VM制造商也会施加额外的限制。 我会与VM制造商联系以获得答案。