网上看到有人说线程池大小设定原则,其主要问题就是怕设置大了影响性能。我以前也是这么认为,因为首先书上这么写的,其次是像weblogic有自调优线程池.也间接论证了需要仔细设定线程池大小。
不过有一次心血来潮,想写一个自调优线程池的时候,(使用HP小型机做的调试)发现实际情况不是这样。线程设置大一些,并不会对应用有多大的负面效果,充其量CPU消费可能比最佳线程数大小多一点点。相反,不可以找这个最佳值,设定一个较为大的值是有好处的。因为如果特定应用属于高IO,低计算的易用,如数据库存储,那么处理线程池当然是越大越好。对于以计算为主的,譬如大量的xml解析,及时设置过大的线程数,但因为操作系统内核线程数固定,虚拟机线程只能映射到固定的内核线程上,所以,设置多少都没有关系了。
本来测试的有一组数据,就懒得公布了。结论就是线程池设置大一些,没有关系的 :)
不过有一次心血来潮,想写一个自调优线程池的时候,(使用HP小型机做的调试)发现实际情况不是这样。线程设置大一些,并不会对应用有多大的负面效果,充其量CPU消费可能比最佳线程数大小多一点点。相反,不可以找这个最佳值,设定一个较为大的值是有好处的。因为如果特定应用属于高IO,低计算的易用,如数据库存储,那么处理线程池当然是越大越好。对于以计算为主的,譬如大量的xml解析,及时设置过大的线程数,但因为操作系统内核线程数固定,虚拟机线程只能映射到固定的内核线程上,所以,设置多少都没有关系了。
本来测试的有一组数据,就懒得公布了。结论就是线程池设置大一些,没有关系的 :)