Concurrency is hard! Programming for Race Conditions, Synchronization, Volatility, Atomic accesses – these are not for the faint of heart. Java includes powerful concurrency components encapsulating design patterns for dealing with the full zoo of concurrency beasts, but even seasoned developers tend to gloss over these complex creatures.
In this presentation, we have developed animations illustrating each of the concurrency components. For each component we present the problem case, followed by the interactive animation – you click buttons representing the range of possible methods, which shows how the threads interact with each other and with the component.
Enjoyed by thousands over the years, this presentation has been fully updated with the latest components as of Java 11, including CompletableFuture.