线程池Fork/join???????
ThreadPoolExecutor类中有个final类型的 AtomicInteger 变量 ctl,一共32位,前3位记录了线程池的状态,后面的29位记录了当前线程池中活跃的线程数
一、线程池的构造方法解释
/**
* 线程池创建的构造方法
* @param corePoolSize 核心线程数目 (最多保留的线程数)
* @param maximumPoolSize 最大线程数目 线程池允许创建的最大线程数
* @param keepAliveTime 非核心线程空闲的时间(针对非核心线程)
* @param unit 非核心线程 空闲生存时间
* @param workQueue 阻塞(任务)队列
* 可选的队列有
* 1、ArrayBlockingQueue 数组结构的有界阻塞队列,队列按FIFO(先进先出)原则对元素进行排序。
* 2、LinkedBlockingQueue 链表结构的无界阻塞队列 队列按FIFO(先进先出)原则对元素进行排序。
* 3、SynchronousQueue 不存储元素的阻塞队列
* 4、DelayedWorkQueue-priorityBlockingQueue 一个具有优先级的无界阻塞队列
* @param threadFactory 创建线程的工厂,可以为线程起一个好名字
* @param handler 拒绝策略。队列和线程池都满了,线程池处于饱和状态,一种处理新提交任务的策略 默认是 AbortPolicy
* 1、AbortPolicy 默认拒绝策略 丢弃任务并且抛出RejectExecutionException
* 2、DiscardPolicy 丢弃新提交的任务但是不抛出异常 策略
* 3、DiscardOldestPolicy 喜新厌的丢失策略。丢失队列最前面的任务,然后重新提交新任务
* 4、CallsPolicy 由调用线程处理此任务
*
*/
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler) {
//-----------------
}
二、创建线程池的方式以及种类
corePoolSize | maximumPoolSize |