3. 如果工作队列已满,线程数小于最大线程数就创建一个新线程处理任务。
4. 如果超过大小线程数,按照拒绝策略来处理任务。
线程池参数
1. corePoolSize:常驻核心线程数。超过该值后如果线程空闲会被销毁。
2. maximumPoolSize:线程池能够容纳同时执行的线程最大数。
3. keepAliveTime:线程空闲时间,线程空闲时间达到该值后会被销毁,直到只剩下 corePoolSize 个
线程为止,避免浪费内存资源。
4. workQueue:工作队列。
5. threadFactory:线程工厂,用来生产一组相同任务的线程。
6. handler:拒绝策略。有以下几种拒绝策略:
AbortPolicy:丢弃任务并抛出异常
CallerRunsPolicy: 重新尝试提交该任务
DiscardOldestPolicy 抛弃队列里等待最久的任务并把当前任务加入队列
DiscardPolicy 表示直接抛弃当前任务但不抛出异常。
线程池创建方法
1. newFixedThreadPool,创建固定大小的线程池。
2. newSingleThreadExecutor,使用单线程线程池。
3. newCachedThreadPool,maximumPoolSize 设置为 Integer 最大值,工作完成后会回收工作线程
4. newScheduledThreadPool:支持定期及周期性任务执行,不回收工作线程。
5. newWorkStealingPool:一个拥有多个任务队列的线程池。
简述Executor框架
Executor框架目的是将任务提交和任务如何运行分离开来的机制。用户不再需要从代码层考虑设计任务
的提交运行,只需要调用Executor框架实现类的Execute方法就可以提交任务。产生线程池的函数
ThreadPoolExecutor也是Executor的具体实现类。
简述Executor的继承关系
Executor:一个接口,其定义了一个接收Runnable对象的方法executor,该方法接收一个Runable
实例执行这个任务。