On 24/01/2026 13:07, Jianbin Chen wrote:
Hi Alan,

I ran my example on JDK 21 because it uses Thread.sleep. In an earlier message on the mailing list I learned that virtual‑thread performance on JDK 25 was worse for this kind of scenario compared with JDK 21, and that the issue is supposed to be fixed in JDK 25.0.3 — which has not been released yet.

I assume this is about JDK-8370887 [1], which may be an  issue in some usages but I don't think has come up in this thread. For your Thread.sleep benchmark then maybe you can try it with the JDK 26 EA builds [2] where you know that issue has been fixed. As I said, I think that benchmark will need a bit of work (esp. on warmup) to get useful data.



That said, this does not affect the main point of my message: I’m asking for advice about using pooled virtual threads to work around third‑party libraries that implement buffer pools via ThreadLocal
The advise is to not pool virtual threads. If a library is performing poorly because it assumes execution on a pooled thread then all we can suggest is to work with the maintainer of that library on the issue. Note that the JDK removed several usages of thread locals that were caching byte[] and other objects. That caching was beneficial a long time ago but not in recent recent/releases with significantly improved memory management and GC.

-Alan

[1] https://bugs.openjdk.org/browse/JDK-8370887
[2] https://jdk.java.net/26/

Reply via email to