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.
Matching moments
11:15 MIN
Understanding the new virtual threads model
Modern Java: This is not your father's Java anymore
23:22 MIN
How virtual threads solve the concurrency problem
Java 21: The Revolution of Virtual Threads - A Deep Dive
01:39 MIN
Understanding the goals of Java's Project Loom
Java's Project Loom & Co - the end for reactive programming?
18:22 MIN
Solving blocking issues with Project Loom's virtual threads
Java's Project Loom & Co - the end for reactive programming?
43:51 MIN
Comparing Project Loom with reactive programming
Kubernetes Native Java
39:11 MIN
What's new in the Java 21 LTS release
Beam Me Up, Java! Unraveling the Warp-Speed Evolution: A Journey through Java LTS Versions 11 to 21
22:26 MIN
Conclusion on Project Loom's impact on reactive programming
Java's Project Loom & Co - the end for reactive programming?
06:31 MIN
Understanding the problem of blocked threads in concurrency
Java's Project Loom & Co - the end for reactive programming?
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
Modern Java 25
Ron Veen
Java with a Clojure mindset
Dan Lebrero
Best of Java 15 and beyond—my favorite features
Michael Inden
Modern Java
Ron Veen
Related Articles
View all articles.gif?w=240&auto=compress,format)
.gif?w=240&auto=compress,format)


From learning to earning
Jobs that call for the skills explored in this talk.

Senior Backend Engineer Java/Spring
iov42
Vienna, Austria
Senior
Java
Spring
Ethereum
PostgreSQL
Blockchain
+3







