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 实现的原理
略。