JUC_线程池数量

去一个网页抓数据保存到数据库中,这个过程也就1秒中吧 ,线程池FixedThreadPool配制多少合适?

如果是CPU密集型应用,则线程池大小设置为N+1   N为CPU的核数
如果是IO密集型应用,则线程池大小设置为2N+1

这里去一个网页抓数据 需要建立HTTP请求响(IO)应后拿到数据,然后再将数据入库(IO) 这个过程 是IO密集型的任务
即需要建立 2N+1个线程

更精确的计算

最佳线程数目=(  (线程等待时间+线程CPU时间)  / 线程CPU时间 )* CPU数目

先跑出来 1.请求和写库时的IO等待时间  2.CPU的执行时间  3.CPU的数目 然后通过上面的公式拿到
线程CPU时间=0.5s
线程等待时间=1.5s
CPU核心数为=8
((0.5+1.5)/0.5)*8=32

maximumPoolSize

JUC_线程池数量_第1张图片

最大线程数为3
 如果目前有5个线程 此时线程池内仍然只有一个线程
如果目前有6个线程,即些是队列满了才会开启新的线程 因此maximumPoolSize主要是看队列是否满了,满了才会开启新的线程

 

 

你可能感兴趣的:(JUC_线程池数量)