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.
Featured Partners
Related Videos
Java 21: The Revolution of Virtual Threads - A Deep Dive
Christian Woerz
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
Best of Java 15 and beyond—my favorite features
Michael Inden
The Cool Thing about Cool Things in Java 16 & 17 LTS
Mohamed Taman
Java's Project Loom & Co - the end for reactive programming?
Jan Weinschenker
Side-by-Side: Reactive vs non-reactive Java
Jan Weinschenker
From learning to earning
Jobs that call for the skills explored in this talk.
Java Developer
Java Developervanloq Limited
Belfast, United Kingdom
GIT
Java
Spring
MongoDB
Scripting (Bash/Python/Go/Ruby)
Microservices Backend Java Developer
VIEWNEXT
Municipality of Mijas, Spain
Remote
Intermediate
GIT
Java
Kafka
Docker
+6
Microservices Backend Java Developer
VIEWNEXT
Municipality of Madrid, Spain
Remote
Intermediate
API
GIT
Java
REST
+10
Contract Algo Trading Java Developer - eTrading, low latency, Java APIs, Multithreading, FIX
Scope AT
Manor Park, United Kingdom
API
UML
Java
Test Driven Development

