ThreadPoolExecutor源码分析及阻塞提交任务方法
ThreadPoolExecutor源码 ThreadPoolExecutor 基本使用参考: ThreadPoolExecutor执行过程分析 线程池状态标志 private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0)); ctl 保存了线程池的运行状态(runState)和线程池内有效线程数量(workerCount)。 // Packing and unpacking ctl private static int runStateOf(int c) { return c & ~CAPACITY; } private static int workerCountOf(int c) { return c & CAPACITY; } private static int ctlOf(int rs, int wc) { return rs | wc; } 用 ctl 的高3位来表示线程池的运行状态, 用低29位来表示线程池内有效线程的数量。ctlOf() 方法用于计算出ctl的值。runStateOf()和workerCountOf()方法分别通过CAPACITY来计算得到其runState和workerCount,CAPACITY=29个1。 线程池的运行状态: // runState is