Java的服务器一般运行几个线程比较合适?

理论上,比如8核CPU可以同时运行8个thread,但是一般运行多少线程比较合适呢?
我觉得应该大于8个,因为可能有线程空闲,但是太多的线程会有很大的线程切换成本和占有太多内存。根据大家的经验,线程数应该怎么确定?

阅读 11.4k
6 个回答

阻塞型任务:可用CPU*(5-10)
计算型任务:可用CPU数
JAVA并发编程实践中有讲过

经验上来说,一般使用CPU*2的量,当然这个没有科学依据。

根据cpu总核数的倍数去做实验,具体机器压测性能就知道

如果服务器就只有你一个程序就CPU数量,或者CPU数据*2都可以,如果还有其他程序,我建议是比CPU数量低,具体低多少还是测试一下看看实际情况。要不你把CPU资源都占了,CPU调度的大部分时间都可能命中你的程序。

看你的程序是计算密集还是io密集了,或者直接cpu数量*2。万能魔数-_-

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题