Orbit · Explore

Java · by Salma Idrissi · 2026-11-04

How are you handling virtual threads in production so far?

We moved a fairly I/O-heavy service from a big fixed thread pool to virtual threads and throughput looks better, but debugging under load has been a different experience. We hit a few cases where synchronized blocks around blocking calls caused pinning before we updated our JDK and some libraries. Thread dumps also look very different with thousands of threads. For those running them in prod, what surprised you and what would you do differently?

20 sparks · 4 comments

Comments

Khalid Al Zahrani · 2 likes

check your JDBC driver and connection pool versions first. that was 80% of our problems

Mateo Cruz · 2 likes

JFR events for pinning saved us a lot of guessing

Khalid Al Zahrani · 0 likes

honestly we went back to reactive for one service because the team already knew it well. not every migration is worth it

Mateo Cruz · 2 likes

fair but reactive code is so much harder to onboard people on