David Vlijmincx
Introduction and pitfalls of Java's new concurrency model
#1about 7 minutes
Understanding Java's traditional platform threads
Traditional platform threads are resource-intensive because they map directly to OS threads, leading to memory limitations and the need for pooling with executor services.
#2about 2 minutes
Introducing lightweight virtual threads in Java 21
Virtual threads are a lightweight, JVM-managed alternative to platform threads that avoid expensive OS calls and use resizable heap memory for their stacks.
#3about 2 minutes
Comparing memory usage of platform vs virtual threads
A comparison shows that while memory usage is similar for a small number of threads, virtual threads use significantly less memory at scale, avoiding out-of-memory errors.
#4about 5 minutes
How to create and manage virtual threads
Virtual threads can be created using the Thread.startVirtualThread() static method, a builder pattern, or the new newVirtualThreadPerTaskExecutor which simplifies lifetime management.
#5about 5 minutes
How virtual threads work with carrier threads
Virtual threads run on a pool of platform threads called carrier threads, and are mounted or unmounted during blocking operations to keep the carrier threads busy.
#6about 2 minutes
Common pitfalls when using virtual threads
Avoid common pitfalls such as expecting faster single-thread performance, using them for long-running CPU-bound tasks, or pooling them, as they are designed to be cheap and disposable.
#7about 6 minutes
The problem structured concurrency solves
Unlike unstructured concurrency which can lead to leaked threads and wasted resources, structured concurrency ensures the lifetime of child threads is confined to a specific code block.
#8about 4 minutes
Implementing a race policy with ShutdownOnSuccess
The ShutdownOnSuccess policy in StructuredTaskScope is used to race multiple tasks and retrieve the result of the first one that completes successfully, canceling the others.
#9about 3 minutes
Implementing an all-or-nothing policy with ShutdownOnFailure
The ShutdownOnFailure policy ensures that all forked tasks must complete successfully; if any task fails, all other running tasks are immediately canceled.
#10about 6 minutes
Creating a custom structured task scope policy
Developers can extend StructuredTaskScope and override the handleComplete method to implement custom shutdown logic based on specific business criteria from task results.
#11about 1 minute
Key takeaways for adopting virtual threads
To get started, developers primarily need to use Thread.startVirtualThread() for single tasks or the newVirtualThreadPerTaskExecutor for managing multiple tasks.
#12about 9 minutes
Q&A on virtual threads, reactive programming, and Java 21
The speaker answers audience questions about replacing Project Reactor, migrating existing applications, using thread-locals, and other new features in Java 21.
Related jobs
Jobs that call for the skills explored in this talk.
tree-IT GmbH
Bad Neustadt an der Saale, Germany
€54-80K
Intermediate
Senior
Java
TypeScript
+1
Matching moments
01:32 MIN
Organizing a developer conference for 15,000 attendees
Cat Herding with Lions and Tigers - Christian Heilmann
04:57 MIN
Increasing the value of talk recordings post-event
Cat Herding with Lions and Tigers - Christian Heilmann
04:49 MIN
Using content channels to build an event community
Cat Herding with Lions and Tigers - Christian Heilmann
03:17 MIN
Selecting strategic partners and essential event tools
Cat Herding with Lions and Tigers - Christian Heilmann
02:39 MIN
Establishing a single source of truth for all data
Cat Herding with Lions and Tigers - Christian Heilmann
02:44 MIN
Rapid-fire thoughts on the future of work
What 2025 Taught Us: A Year-End Special with Hung Lee
03:48 MIN
Automating formal processes risks losing informal human value
What 2025 Taught Us: A Year-End Special with Hung Lee
03:39 MIN
Breaking down silos between HR, tech, and business
What 2025 Taught Us: A Year-End Special with Hung Lee
Featured Partners
Related Videos
Java 21: The Revolution of Virtual Threads - A Deep Dive
Christian Woerz
Java's Project Loom & Co - the end for reactive programming?
Jan Weinschenker
Modern Java: This is not your father's Java anymore
Ron Veen
Beam Me Up, Java! Unraveling the Warp-Speed Evolution: A Journey through Java LTS Versions 11 to 21
Jonathan Vila
Java with a Clojure mindset
Dan Lebrero
Modern Java 25
Ron Veen
Best of Java 15 and beyond—my favorite features
Michael Inden
The Eventloop in JavaScript - How does it work?
Christian Woerz
Related Articles
View all articles


.gif?w=240&auto=compress,format)
From learning to earning
Jobs that call for the skills explored in this talk.








