美文网首页
Java线程池如何设置

Java线程池如何设置

作者: 雁阵惊寒_zhn | 来源:发表于2020-10-31 09:56 被阅读0次

想要正确地设置线程池大小,需要分析计算环境、资源预算和分析任务的特性等,防止线程池设置过大或者过小。

一般来说,对于计算密集型(CPU密集型)任务,拥有N个处理器的系统上,当线程池大小为N+1时,通常能实现最优的利用率。多出来的额外的一条线程,可以保证偶尔出现故障时,CPU的时钟周期仍旧不会被浪费掉。

对于包含IO操作或者其他阻塞任务的操作(IO密集型),由于线程不会一直执行,因此线程池规模应该更大。具体需要估算出任务的等待时间与计算时间的比值C(C>0),假如在拥有N个处理器的系统上,CPU的目标使用率为U(U在[0, 1]集合中)。则线程数n,根据公式n=N*U*C计算。显然,线程池大小不是由CPU周期唯一条件确定的,还可能包含内存等其他资源的影响,计算每个任务对资源的需求量,然后用该资源的可用总量除以这个需求量,所得的结果就是线程池大小的上限。另外,如果任务需要通过某种资源池来管理资源,那么线程池大小也会受到资源池大小的影响。

所以,对于线程池大小的设置,一般原则,N个处理器的系统上,计算密集型(CPU密集型)为N+1,IO密集型尽可能更大一些。

相关文章

网友评论

      本文标题:Java线程池如何设置

      本文链接:https://www.haomeiwen.com/subject/mgmkvktx.html