CPU-bound endpoint (/cpu, 20,000x SHA-256), concurrency=60, 2 vCPU sandbox, Spring Boot 4.1.1 / JDK 25.0.4.1 ============================================================================================================ platform threads : total=60 success=60 wall=208ms p50=130ms p99=202ms virtual threads : total=60 success=60 wall=201ms p50=187ms p99=196ms a CPU-bound virtual thread never yields -- it stays mounted on its carrier for the full computation, so it competes for the same 2 physical cores a platform thread would. Expect these two wall times to be close, not virtual threads winning decisively as in the I/O case.