- Java Concurrency / Multithreading Tutorial
- Multithreading Benefits
- Multithreading Costs
- Concurrency Models
- Concurrency vs. Parallelism
- Creating and Starting Java Threads
- Race Conditions and Critical Sections
- Thread Safety and Shared Resources
- Thread Safety and Immutability
- Java Memory Model
- Java Synchronized Blocks
- Java Volatile Keyword
- Java ThreadLocal
- Thread Signaling
- Deadlock Prevention
- Starvation and Fairness
- Nested Monitor Lockout
- Slipped Conditions
- Locks in Java
- Read / Write Locks in Java
- Reentrance Lockout
- Blocking Queues
- Thread Pools
- Compare and Swap
- Anatomy of a Synchronizer
- Non-blocking Algorithms
- Amdahl's Law
- Java Concurrency References
Java Concurrency References
From time to time I get asked about what books and articles I have read before writing this Java concurrency tutorial. Concurrency is tricky so people often like to be able to double check my writing against other sources. Therefore I have collected this list of references of concurrency related books and articles that I have used in the writing of this Java concurrency tutorial.
Java Concurrency in Practice
This is the newest book on Java concurrency. It is from 2006 so it is a bit dated in some ways. For instance, it does not cover asynchronous architectures much (which are getting popular now in 2015). It is a decent book on Java concurrency. By far the best book on the java.util.concurrent package in Java 5 and forward.
Seven Concurrency Models in Seven Weeks
This book is newer (from 2014) and covers different concurrency models - not just the traditional Threads, Shared Memory and Locks model.
Concurrent Programming in Java - 1st + 2nd Ed. This book (in two editions) was a good primer on Java concurrency back in the day. The book is from 1999, so a lot has happened in Java and with concurrency models since then.
Taming Java Threads
This was also a good primer on Java threading back in the day. The book is from 2000, so like with Doug Lea's book, a lot has changed since.
A decent book on Java threading from 2004. Most of the material in this book is covered in other books though, so I didn't read it too closely.
Good article on non-blocking concurrency algorithms (from 1991).
The LMAX Disrupter concurrent data structure (a single reader, single writer queue-like structure with high concurrency).