线程池的参数理解
Params:
- corePoolSize
核心线程数,即一般情况下有几个线程工作 - maximumPoolSize
最大线程数,即任务过多,核心线程处理不过来,则创建新的线程来处理任务。但线程池中总数不应超过该值。 - keepAliveTime
保持时间,即非核心线程的生存时间,非核心线程在处理完任务后,在参数时间内没有新的任务,即关闭该线程。
unit
上述保持时间的单位。 - workQueue
工作(等待队列),即有多的任务到来,但是此时没有空闲线程,则新的任务存放在工作队列中进行等待,等待有的线程完成手上任务来此队列取任务进行处理 - threadFactory
线程工厂,即创建线程的方式,通过线程工厂创建。 - handler
拒绝策略
常有四种拒绝策略:
1、AbortPolicy默认拒绝策略,在等待队列已满时,新的任务到来则直接拒绝(丢弃),不进行处理,抛出异常。
2、DiscardPolicy,该策略与默认策略一样,不同之处在于不抛出异常。使用中难以捕获问题发生地点。
3、DiscardOldestPolicy(喜新厌旧策略),等待队列已满,新的任务到来,则丢弃等待队列中前面的任务(最旧的任务),不抛出异常,然后将新的任务加入到等待队列。
4、CallerRunsPolicy,提交任务的线程处理任务。即等待队列已满,新的任务到来,此时由提交该任务的线程处理该任务。如main线程提交任务t,等待队列已满,main线程处理该任务t.