Concurrency is about handling multiple tasks at the same time. Its primary goal is correctness-not performance.
Without proper coordination, concurrent systems become unpredictable.
Concurrency enables programs to utilize multiple cores and scale, but it does not guarantee parallel execution.
Concurrency vs Parallelism
Concurrency defines multiple tasks that can run independently. The runtime schedules them, while parallelism determines whether they execute simultaneously on multiple cores.
Learning Path
- Seeing Concurrency
- Breaking Things
- Understanding Why
- Controlling execution
- Building async systems
- Ensuring correctness
- Upgrading the execution model
- Debugging real issues
- Designing real systems
Follow the weeks in order-the concepts build on each other.
Roadmap
- Week 0: Same Code, Different Output
- Week 1: Race Conditions
- Week 2: Memory Visibility
- Week 3: Executors & Thread Pools
- Week 4: ForkJoin & Parallelism
- Week 5: CompletableFuture (Core)
- Week 6: CompletableFuture (Advanced)
- Week 7: Locks & Synchronization
- Week 8: Concurrent Collections & Atomics
- Week 9: Virtual Threads
- Week 10: Debugging & Performance
- Week 11: Real-World Concurrency Design