Performance Issues with Virtual Threads + ThreadLocal Caching in Third-Party Libraries (JDK 25)

Alan Bateman alan.bateman at oracle.com
Sat Jan 24 08:32:54 UTC 2026



On 24/01/2026 05:55, Jianbin Chen wrote:
> :
>
> I constructed the Executor directly with 
> Executors.newVirtualThreadPerTaskExecutor();
> however, the run results still show that the pooled virtual‑thread 
> behavior outperforms the non‑pooled virtual threads.

This looks like it is benchmarking Thread.sleep so a different topic to 
that of libraries that are caching objects in thread locals.

For the Thread.sleep test then it would easier to discuss if converted 
to a JMH benchmark as there are warmup issues in the test you included. 
Also just to note that the Thread.sleep implementation has changed 
significantly changed since JDK 21 so you will see very different 
results with JDK 25 runs (some of the messages in the discussion speak 
of JDK 21, the subject line in the mails say "JDK 25", so I'm guessing 
you might be testing both).

-Alan


More information about the loom-dev mailing list