Table of Contents
- Introduction
- Concurrency on the JVM and the Java Memory Model
- Traditional Building Blocks of Concurrency
- Asynchronous Programming with Futures and Promises
- Data-Parallel Collections
- Concurrent Programming with Reactive Extensions
- Software Transactional Memory
- Actors
- Concurrency in Practice
- Reactors

