【发布时间】:2010-08-01 09:06:38
【问题描述】:
我正在开发一个与网络上数百个设备交互的应用程序。提交的工作类型需要大量并发线程(主要是因为它们中的每一个都需要网络交互并且单独进行,但也有其他原因)。目前,我们的每个交互设备需要大约 20-30 个线程。
一个简单的计算可以在数千个线程上计算,甚至多达 10,000 个线程。如果我们撇开线程切换等 CPU 损失不谈,在 CentOS 64 位上运行的 Java 5 可以处理多少个线程?这只是 RAM 的问题还是我们应该考虑其他什么?
谢谢!
【问题讨论】:
-
如果您认为 “大量的网络 I/O” [原文如此] 意味着并发需要大量线程,您就完全错了,正如您对 YoK 的评论.有很多系统在不使用数千个线程的情况下产生和消耗大量网络 I/O。
-
@NoozNooz42 10k 连接是一个巨大的数量而且肯定不是微不足道的,线程与否,即使它之前已经完成。
-
@NoozNooz42 除了 NIO(我在下面评论过,我们无法做到)并且考虑到网络 IO(以及在远程服务器上的处理)需要很长时间,您将如何获得更好的性能?
标签: java multithreading high-load