主要核心参数:
一个阻塞任务的BlockingQueue<Runnable> workQueue;
一个用于线程等待的列表 HashSet<Worker> workers;
使用ReentrantLock mainLock 锁
corePoolSize: 核心线程数量
maximumPoolSize: 最大线程池数量
默认一直会有corePoolSize的数量的线程在等待。
当任务数大于corePoolSize时,便会根据maximumPoolSize来动态创建和销毁线程。
当线程达到maximumPoolSize后,再进入的任务会在workQueue等待
ExecutorService:真正的线程池接口
ThreadPoolExecutor:ExectorService的默认实现,继承了AbstrctExecutorService