1、核心线程数(Core Pool Size):核心线程数是线程池中保持活动状态的最小线程数,即使在线程空闲的时候也不会被回收。
2、最大线程数(Maximum Pool Size): 最大线程数就是线程池中允许的最大线程数,当任务队列中的任务数超过核心线程数时,线程池会创建新的线程来处理任务,直到到达最大的线程数。
3、任务队列(Work Queue):任务队列用于存储等待执行的任务。当线程池中的线程数已经达到核心线程数,并且所有核心线程都在处理任务时,新的任务会被放入任务队列中等待执行。
4、线程存活时间(Keep Alive Time):线程存活时间是非核心线程在空闲状态下的最长存活时间。当线程池中的线程数超过核心线程数,并且空闲线程的数量超过了核心线程数时,空闲线程会在一段时间后被销毁,以减少资源消耗。
5、线程存活时间单位(unit):
6、拒绝策略(拒绝策略) :当所有线程都在繁忙,workQueue 也放满时,会触发拒绝策略。
拒绝策略有四种:
(1)抛异常
java.util.concurrent.ThreadPoolExecutor.AbortPolicy。
(2)由调用者执行任务
java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy。
(3)丢弃任务
java.util.concurrent.ThreadPoolExecutor.DiscardPolicy。
(4)丢弃最早排队任务
java.util.concurrent.ThreadPoolExecutor.DiscardOldestPolicy。
7、线程工厂(threadFactory): 可以定义创建线程的名称,线程组,优先级等。
举例:如某家上市公司,其中核心线程数就是指正式员工,正常情况下,公司正式员工就可以了,但是当旺季的时候,业务量大的时候正式员工忙不过了,此时就需要一些外包员工过来干活其中外包员工就相当于最大线程数,当外包员工也忙不过来的时候就会把任务给放起来,此时就是相当于阻塞队列慢慢处理,如果还是处理不过来,就要拒绝一批业务,此时就是拒绝策略。当淡季的时候,不需要那么员工了,经过一段时间的观察,相当于线程过期时间,然后就会把外包人员放回原来的公司,这相当于线程的回收时间。