Async Showdown: Java Virtual Threads vs. Kotlin Coroutines
summary
Project Loom’s virtual threads arrive in JDK 21: virtual threads production-ready with carrier threads that schedule many lightweight virtual threads, suspension on standard java blocking I/O (not synchronized or native), and guidance to treat them as cheap one‑offs rather than pooled resources; structured concurrency and scope values remain preview features. Kotlin coroutines still use compiler‑generated continuations — continuations make coroutines a state machine — so suspending is cheaper there, coroutines are cross‑platform, and the tradeoff is implicit (virtual threads) vs explicit (suspend) concurrency control.
AI-written summary · about
chapters (13)
- 0:00Introduction to async
- 1:38Thread per request issues
- 5:00Non-blocking I/O solutions
- 8:58Introduction to Project Loom
- 10:45Virtual threads architecture
- 15:27Suspension and blocking
- 18:42Using virtual threads
- 22:30Structured concurrency
- 26:26Scoped values in Java
- 32:02Kotlin coroutines internals
- 37:43Comparing concepts
- 41:03Explicit vs implicit APIs
- 47:02Q&A and future outlook
related talks
44mAsync Showdown: Java Virtual Threads vs. Kotlin Coroutines
45mCoroutines and Loom behind the scenes
36mJava vs. Kotlin: The Ultimate Showdown of Virtual Threads & Coroutines
39mVirtual Threads vs. Coroutines in 2026: Is Java Finally There?
50mAsynchronous Programming in Java using Virtual Threads
45mCoroutines and Loom behind the scenes
01h 00mAsynchronous Programming in Java using Virtual Threads
49mPrepare for what “Loom”s ahead.
