带有虚拟线程的 Apache Tomcat

问题描述 投票:0回答:1
tomcat project-loom virtual-threads
1个回答
0
投票

是的,您的观察是正确的。从 Tomcat 10.1.16 开始,

Nio2Endpoint
不会在虚拟线程上执行代码,而
NioEndpoint
则会执行。虽然
AbstractEndpoint
(两者的共同超类)支持虚拟线程的使用,但
Nio2Endpoint.setSocketOptions
方法调用
AbstractEndpoint.processSocket
,参数
dispatch
硬编码为 false,并带有注释:继续在同一线程上进行处理,因为接受器是异步的。我认为这与 NIO2 Tomcat Connector 的潜在异步性有关。有趣的是,它确实在虚拟线程上创建了它的 Acceptor,但我们不能从中受益匪浅。

我相信这是这个版本的 Tomcat 的一个简单错误,看看它是否在后续版本中得到修复或向他们报告是有意义的。

顺便说一句,可以覆盖 Tomcat 连接器实现,并且修复似乎非常简单,并且覆盖 - 微不足道。如果您被锁定到此版本的 Tomcat,并且您的工作线程的虚拟性质足够重要,请告诉我,我们可以尝试这样做。

© www.soinside.com 2019 - 2024. All rights reserved.