springboot 默认是用 tomcat

1.tomcat

这里并发为什么是 200,我们可以调整?
- 因为 tomcat 线程池类似 Java 线程池,但有一定区别,会先创建非核心线程后再放入队列中。
- 我们可以通过调整 最大线程数来 控制并发数量

如果并发数小于 200 或者大于 200 是如何表现?(默认配置下)
- 小于 200 会创建核心线程和非核心线程立即处理任务,大于 200 的任务会放入等待队列中

core----max----queue

2. undertown

  • 可以看到默认会根据机器可用的 CPU 数 * 8 计算一个 workerThreads 作为最大线程数和核心线程数,我电脑的 CPU 数为 8,因此最大线程数和核心线程数都为 64。
  • 同时,线程池基于 Java 线程池实现,因此当等待队列未满时使用仅使用核心线程池。

core----queue---max

 

3.java的线程池

  1. 当提交一个新任务到线程池时,如果当前运行的线程数小于corePoolSize,则创建新线程来处理任务(即使有空闲的核心线程)。

  2. 如果运行的线程数等于corePoolSizeWorkQueue未满,则任务被放入WorkQueue中等待。

  3. 如果WorkQueue已满,且运行的线程数小于MaximumPoolSize,则创建新线程来处理任务。

  4. 如果WorkQueue已满且运行的线程数等于MaximumPoolSize,则根据RejectedExecutionHandler策略来处理此任务。

core----queue---max

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐