1. JMH 比较虚拟线程与平台线程时,为什么必须引入真实阻塞、并发度和载体线程观测
用 JMH 比较虚拟线程与平台线程时,为什么必须引入真实阻塞、并发度和载体线程观测?不这样做会有什么偏差?
- JMH 基准对真实阻塞的复现
- 并发度与测试设计的关联
- 载体线程观测对结论的验证
虚拟线程的核心优势在于"阻塞时挂起而非占用平台线程",若基准中不引入真实阻塞(如 IO 等待),虚拟线程与平台线程在纯计算场景几乎无差异,无法体现其吞吐优势。同时需设置足够的并发度,让阻塞任务能并行调度,否则体现不出超量线程的承载能力。最后要观测载体线程数量,确认虚拟线程确实被调度到有限的载体线程上,而非悄悄创建大量平台线程。三者齐备,基准结论才真实可信。
JMH 结果的有效性取决于能否击中虚拟线程的机制特征。无阻塞则无调度优势,无并发则无承载优势,无载体观测则无法验证机制是否生效。忽略这些,基准会得出误导性结论(如"虚拟线程更快"或"无差别")。