1.线程池的七个参数
corePoolSize 线程池的核心线程数
maximumPoolSize 能容纳的最大线程数
keepAliveTime 空闲线程存活时间 如果一个线程在一定时间内没有接活,就可以下线了
unit 存活的时间单位
workQueue 存放提交但未执行任务的队列---阻塞队列
threadFactory 创建线程的工厂类
handler 等待队列满后的拒绝策略
当提交的任务数量超过核心线程数之后,会将任务放入堵塞队列中,当队列满后,会适当的增加线程池中的数量,直到达到最大数量,如果在提交任务的话,会触发线程池的拒绝策略。
2.线程池的4个拒绝策略
1)AbortPolicy
2) DiscardOldestPolicy 丢弃堵塞队列中最老的一个任务,并重试(将新任务加入)
3) DiscardPolicy 默默地把任务丢弃,其他啥也不干
4) CallerRunsPolicy
直接在运行该任务的线程上运行。
3.底层原理
4.线程池的特点:
降低资源消耗,提高了资源的利用率:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
提高了响应时间,任务不需要等待线程创建就可以执行。
提高了线程的管理型,线程很珍贵,不能无限制的创建。
可以控制最大的并发数