• new ThreadPoolExecutor()
    • int corePoolSize # 核心线程数, 永远存活。可设置参与回收
    • int maximumPoolSize # 最大线程数
    • long keepAliveTime # 生存时间
    • TimeUnit
    • BlockingQueue # 任务队列
    • ThreadFactory # 线程工厂, 设线程名
    • RejectedExecutionHandler # 拒绝策略
      • Abort # 抛异常
      • Discard # 忽略掉
      • DiscardOldest # 忽略掉排除最久的
      • CallerRuns # 调用者线程执行, 再多就阻塞
  • AtomicInteger ctl
    • 高3位线程池状态,低29位线程数量
  • void execute()
    • 判断添加核心线程
    • 放入队列成功
      • 拒绝或添加非核心线程
    • 添加非核心线程失败
      • 拒绝
  • boolean addWorker(Runable, boolean)
    • 线程数量加1
    • 添加Worker
      • 加锁
      • 加线程
      • 启动
  • class Worker extends AbstractQueuedSynchronizer implements Runnable
    • 本身是AQS锁, 被多任务(线程)访问
    • Tread thread