深入拆解Tomcat & Jetty:Executor

一、Executor 组件:Tomcat 如何扩展 Java 线程池

Tomcat 的线程池也是一个定制版的 ThreadPoolExecutor。

我们知道 Java 原生线程池的任务处理逻辑比较简单:

  • 1,前 corePoolSize 个任务时,来一个任务就创建一个新线程。
  • 2,后面再来任务,就把任务添加到任务队列里让所有的线程去抢,如果队列满了就创建临时线程。
  • 3, 如果总线程数达到 maximumPoolSize,执行拒绝策略。

Tomcat 线程池扩展了原生的 ThreadPoolExecutor,通过重写 execute 方法实现了自己的任务处理逻辑:

  • 1,前 corePoolSize 个任务时,来一个任务就创建一个新线程。
  • 2,再来任务的话,就把任务添加到任务队列里让所有的线程去抢,如果队列满了就创建临时线程。
  • 3,如果总线程数达到 maximumPoolSize,则继续尝试把任务添加到任务队列中去。
  • 4,如果缓冲队列也满了,插入失败,执行拒绝策略。

Tomcat 线程池的 execute 方法的核心代码。

This chapter requires login to view full content. You are viewing a preview.

Login to View Full Content

Course Curriculum

3

框架与 I/O:Spring、Netty 与 Web 容器

理解 Spring Boot 自动装配、AOP 与事务原理,掌握 Netty Reactor 模型及 Tomcat 连接处理机制,构建高内聚、易扩展的应用服务层。
4

高性能中间件:消息、缓存与存储

熟练运用 MySQL 索引/事务、Redis 缓存策略、Kafka/RocketMQ 消息可靠性,以及 ZooKeeper 分布式协调,搭建稳定、解耦的分布式数据底座。
6

云原生:容器化、可观测性与工程效能

通过 Docker/K8s 实现弹性部署,集成 Metrics/Logs/Traces 构建可观测体系,推动 DevOps 与自动化,让架构在云上持续交付与进化。