How Java 21 Virtual Threads Pinned and Deadlocked Our Billing System

We were excited to migrate our billing and transaction gateway to Java 21. The promise was alluring: “virtual threads let you write…