Concurrency hazards - deadlock conditions and prevention, livelock vs deadlock, thread starvation causes and mitigation
Classic concurrency pattern - bounded buffers, blocking queues, condition variables, and real-world applications
Coordinating access to shared resources - locks, mutexes, semaphores, reentrant locks, and read-write locks
Differences between threads and processes - memory sharing, creation cost, use cases, and when to choose each
Managing thread lifecycle efficiently - fixed vs cached pools, work stealing, executor frameworks, and sizing strategies
Volatile ensures memory visibility; atomic variables enable lock-free thread safety with CAS. Learn when to use each, with Java examples for concurrent programming interviews.