java四种线程池 大家如何估算线程池数量?
浏览量:2241
时间:2021-03-22 02:34:22
作者:admin
大家如何估算线程池数量?
线程池的大小对系统的性能有一定的影响,过大或过小的线程数都不能起到最佳的系统性能,但是线程池大小的确定不需要非常精确。只要避开最大和最小条件,线程池的大小不会对性能产生太大的影响。一般来说,要确定线程池的大小,需要考虑cpu的数量、内存大小等因素。在《Java并发实践》一书中,我们给出了一个估算线程池大小的经验公式:
公式:nthread=NCU*UCU*(1 W/C),每个字段的含义:
nthreads:线程数
ncpu:CPU数,运行时.getRuntime(). Availableprocessors()
UCU:CPU利用率,在[0,1
]W/C范围内:等待时间与计算时间的比值
实际上,我们需要区分计算密集型和IO密集型。
如果C是无限的,也就是说,它是计算密集型的,那么太多的线程是没有意义的,因为它需要CPU计算,扮演太多的角色是没有用的。
如果它是Io密集型的,它可以启动更多线程,因为等待时间太长。
一个简单的总结是:IO密集型多线程,计算密集型线程=CPU内核更合适。
java四种线程池 java线程池释放线程 java线程池工具类
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。