前提
趁着国庆前后阅读了虚拟线程相关的源码,写了一篇《虚拟线程 - VirtualThread源码透视》,里面介绍了虚拟线程的实现原理和使用示例。需要准备做一下前期准备:
- 安装
OpenJDK-19
或者Oracle JDK-19
- 准备好嵌入式
Tomcat
的依赖,需要引入三个依赖包,分别是tomcat-embed-core
、tomcat-embed-el
和tomcat-embed-websocket
,版本选用10.1.0+
查看Tomcat
官方文档的CHANGELOG
:
支持Loom
项目的Tomcat
最低版本为10.1.0-M16
,对应的正式版是10.1.0
(当前时间为2022-10-07
前后),低于此版本因为大量API
还没有适配虚拟线程,主要是没有改造监视器锁的引用导致虚拟线程pin
到载体(平台)线程等问题,因此别无他选。另外,重要的提醒说三次:
- 本文是实验性质,在未完全证实改造功能可以应用生产环境前需要谨慎评估,或者先别使用于生产环境
- 本文是实验性质,在未完全证实改造功能可以应用生产环境前需要谨慎评估,或者先别使用于生产环境
- 本文是实验性质,在未完全证实改造功能可以应用生产环境前需要谨慎评估,或者先别使用于生产环境
引入依赖
引入以下依赖:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>10.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupI