ThreadPoolExecutor

1 ThreadPool和ThreadFactory的区别

前者是真正的thread pool,后者只是创建Thread对象的工厂,前者的thread都是后者创建的。

2 配置参数

2.1 keepAliveTime

设置ThreadPool中处于idle状态的线程等待工作的时间,超过了这个时间该idel线程就会被销毁。

2.2 corePoolSize

core thread,如果不设置allowCoreThreadTimeOut的话,它们就是该thread pool中常驻的线程,就算一直没有task来,它们也一直会处于idle状态。而

corePoolSize是设置的core thread的数目。在添加Runnable到任务队列的时候,当core thread数目小于它的时候,会向thread pool中继续添加新的线程。

2.3 allowCoreThreadTimeOut

是否允许core thread因为timeout被销毁。

2.4 maximumPoolSize

允许的最大的线程数目。

假如core thread的数目已经超过了corePoolSize,但是添加任务的时候发现任务队列是满的,这个时候thread数目又没有超过maximumPoolSize,那么这个时候就继续增加新的线程,因为core线程已经忙不过来了。如果超过了maximumPoolSize的话,就拒绝任务的添加了,让这个任务在主线程中执行。

3 实现的原理

略。

猜你喜欢

转载自www.cnblogs.com/hustdc/p/8934195.html