实现原理
ThreadPoolExecutor执行execute:
- 如果当前运行的线程少于corePoolSize,则创建新线程来执行任务(需要获取全局锁)。
- 如果运行的线程等于或多余corePoolSize,则将任务加入BlockingQueue
- 如果无法将任务加入BlockingQueue(队列已满),则创建新的线程来处理任务(需要获取全局锁)。
- 如果创建新线程将使当前运行的线程超过maximumPoolSize,任务将被拒绝,并调用RejectedExecutionHandler.rejectedExecution()方法。