System design (HLD, LLD and architecture)
Concurrency & Multithreading
The planned outline of 14 modules. Lessons are written, run and reviewed before they are published.
Before this track
Planned outline
- Module 1
Foundations: what concurrency is and why it is hard
Coming soon - Module 3
Coordination: waiting, signalling and hand-offs
Coming soon - Module 4
Liveness: deadlock, livelock and starvation
Coming soon - Module 5
Atomics and memory models
Coming soon - Module 6
Lock-free and concurrent data structures
Coming soon - Module 7
Executors, fork/join and cancellation
Coming soon - Module 8
Async I/O, event loops and structured concurrency
Coming soon - Module 9
Message passing: CSP channels and actors
Coming soon - Module 10
Runtimes and type systems compared
Coming soon - Module 11
Testing, verification and debugging
Coming soon - Module 12
Performance: scalability and the hardware
Coming soon - Module 13
Concurrency in design and interviews
Coming soon - Module 14
Case studies with full class designs in six languages
Coming soon
Official documentation
- docs.oracle.com/javase/specs/jls/se25/html/jls-17.html (docs.oracle.com)
- go.dev/ref/mem (go.dev)
- openjdk.org/jeps/444 (openjdk.org)
- docs.python.org/3.14/howto/free-threading-python.html (docs.python.org)
More in System design (HLD, LLD and architecture)
- System Design (High-Level Design) (coming soon)
- Low-Level Design (Object-Oriented Design) (coming soon)
- Design Patterns (GoF and modern) (coming soon)
- API Design (REST, gRPC, GraphQL, Webhooks) (coming soon)
- All System design tracks
- How we make lessons