在Java 1.7中可以管理多少个线程?

时间:2010-07-29 16:43:55

标签: java multithreading

Java 1.7有多少线程能够管理? 在服务器/客户端Web程序中,客户端可以登录到服务器。此登录状态为statefull。 客户>每服务器3000个

6 个答案:

答案 0 :(得分:3)

“足够”。如果没有,则使用具有适当Executor的线程池。你需要做什么?

答案 1 :(得分:1)

还没有Java 1.7(还)。在64位系统上,您可以达到数万个。在32位系统上,您主要限于堆栈的虚拟地址空间。

Long page on the "c10k" problem.

答案 2 :(得分:1)

理论上?成千上万。

在实践中 - 完全取决于您的系统。在用完线程之前,你更有可能耗尽内存。

答案 3 :(得分:1)

Java具有将线程数限制为Integer.MAX_VALUE的API。 (约20亿)

然而,您的操作系统/硬件将是真正的限制。根据您的工作情况,100到10K将是您的限制。

通常会创建线程以提高性能。但是,它们会增加开销,因此您将达到添加线程会降低性能的程度。在极少数情况下,两个线程不如一个线程。更多线程损害性能的程度取决于您的应用程序,硬件及其使用方式。

注意:如果您有16个逻辑核心,则在任何给定时刻最多只能运行16个线程。

答案 4 :(得分:-1)

我认为上限与可用堆空间有一些关系。但实际限制更多地与运行系统的硬件有关,而不是Java版本。

答案 5 :(得分:-1)

每个线程都有自己的堆栈空间。堆栈存储在堆外部,但存储在JVM的已分配内存中。因此,最大线程通常受操作系统可以分配给JVM的内存量的限制。在Windows上,这相当于在JVM内存不足之前大约1000-2000个最大线程。