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
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
23:08 MIN
Q&A on Project Loom and integration challenges
Side-by-Side: Reactive vs non-reactive Java
39:49 MIN
Overview of major Java development projects
Best of Java 15 and beyond—my favorite features
44:10 MIN
Q&A on Java's future and developer career paths
Beam Me Up, Java! Unraveling the Warp-Speed Evolution: A Journey through Java LTS Versions 11 to 21
42:00 MIN
Understanding the limitations of virtual threads
Java 21: The Revolution of Virtual Threads - A Deep Dive
15:14 MIN
Managing concurrent tasks with structured concurrency
Modern Java: This is not your father's Java anymore
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 Technical Lead (Cloud) - Remote
VIEWNEXT
Municipality of Madrid, Spain
Remote
Senior
Java
Azure
React
Kafka
+6
Java Developer
Java Developervanloq Limited
Belfast, United Kingdom
GIT
Java
Spring
MongoDB
Scripting (Bash/Python/Go/Ruby)


