在性能影响不是很大的情况下,一般能支持多少线程?
比如像这样的机器:四核酷睿2.5G/i3 3G , 4g内存

解决方案 »

  1.   

    参照posix标准线程模型,进程能创建的线程数理论上只受限于内存大小
      

  2.   

    2000个线程,这得看操作系统支持不支持了一般高并发两三百线程也已经足够处理了
    区区一个4核的CPU,即使操作系统支持2000个线程,CPU处理的过来么!人家4个双核CPU,也就开两三百
      

  3.   


    高负载高并发程序里
    线程的创建和使用还是要参照线程池的思路,
    按需创建和使用在单CPU环境下,你创建再多的线程,也是CPU分片处理的
    到时候调度的开销就会太大通常情况下
    单一应用程序单CPU环境下,100以内的线程能兼顾效率和公平
    再多了就没啥意义了
    OS能创建,系统资源是有限的,各种低速IO就会成为瓶颈
      

  4.   

    每启用一个线程会占用 1MB 的内存空间,2000 个你可以算一下需要多少个内存空间。这还只是线程占用的空间,至于 Java 进程本身,以及数据处理占用的空间都还没有算上去。操作系统对于每个进程所允许的最大线程数也是有限制的,默认情况下 Windows 不会超过 2000 个,Linux 系统在 1000 个左右。
      

  5.   

    如果 2000 个线程同时在跑的话,CPU 估计都会烧起来了
      

  6.   


    windows下线程开到2400个时候,系统就会崩溃,一般300个线程足够使用了,如果需要使用再多的线程,说明设计有问题,或者需要集群服务,单台机器肯定搞定不了。
      

  7.   


    多谢大家的帮助。我这个系统是CS架构的,服务端将来要部署到服务器上。
    系统可能同时有5000个客户端并发访问,每个客户端大约每3秒请求服务端一次。在服务端,对于每一个客户端,大约每一秒就向其它系统请求一次(为每个客户端去远程服务器读取数据啥的),平均下来每个线程的运行时间在200ms左右吧,线程池要设多大合适?还有没有我没说清楚的地方?