Tomcat线程池原理

Tomcat线程池扩充了java的ThreadPoolExecutor

  • tomcat定制了自己的Queue(重写了LinkedBlockingQueue)和ThreadFactory
  • 最大线程数(maximumPoolSize)线程池大小有控制,可以通过参数设置

处理流程:

  • 前corePoolSize个任务入队,同时在线程池创建一个线程。
  • 之后的任务直接放入队列,不创建线程,当任务队列满了就开始创建临时线程。
  • 当达到最大线程数,仍旧尝试向队列添加任务(这点和原生线程池有所不同)。
  • 添加失败,拒绝服务。