https://open8gu.com/concurrent/thread-pool/ktpque4ighgox3gv/

回答话术

线程池通常指 JDK 中 Executor 接口中最通用也是最常用的实现类 ThreadPoolExecutor,它基于生产者与消费者模型实现,从功能上可以分为三个部分:

当我们向线程池提交任务时,线程池将根据下述逻辑处理任务:

image.png

而当一个工作线程启动以后,它将会在一个 while 循环中重复执行下述逻辑:

  1. 通过 getTask 方法从工作队列中获取任务,如果拿不到任务就阻塞一段时间,直到超时或者获取到任务。如果成功获取到任务就进入下一步,否则就直接进入线程退出流程;