Multithreading
Threads Basics
Understand process vs thread, thread schedulers, thread safety overview, and basic concurrency concepts.
Creating Threads
Learn to subclass the Thread class vs implementing the Runnable interface with modern lambda expressions.
Thread Lifecycle
Understand the different states of a Java thread and transitions between them.
Thread Methods
Deep dive into core thread methods: start(), run(), sleep(), join(), yield(), and interrupt().
Thread Priority
Understand thread priority, daemon threads, and their impact on application lifecycle.
Synchronization
Understand thread interference, critical sections, race conditions, and monitor locks.
Synchronized Methods
Understand instance-level synchronized methods and how they lock on the object instance.
Synchronized Blocks
Learn to use block-level synchronization for fine-grained locking and better performance.
Static Synchronization
Understand class-level locks and the differences between static and instance synchronization.
Inter-Thread Communication
Coordinate threads using wait(), notify(), and notifyAll() inside synchronized blocks.
Deadlock
Understand deadlock conditions (Coffman conditions), prevention techniques, and thread dump analysis.
Thread Pool
Understand thread reuse, worker threads, and task queue configurations.
ExecutorService
Understand the Java Executor framework, standard thread pool types, and configurations.
Callable and Future
Submit tasks that return values or throw exceptions using Callable, and track results via Future.
CompletableFuture
Write asynchronous, non-blocking pipeline operations with CompletableFuture.
Locks
Understand the Lock interface, ReentrantLock, lock timeouts, and fairness policies.
ReadWriteLock
Understand read-write separation locks and ReentrantReadWriteLock usage.
Atomic Variables
Learn about lock-free, atomic operations using CPU Compare-And-Swap (CAS) instructions.
volatile Keyword
Understand CPU caches, memory visibility, instruction reordering, and the volatile keyword.
ThreadLocal
Provide thread-confined variables to isolate state within each individual thread.
Semaphore
Manage resource pools using counting semaphores and throttling policies.
CountDownLatch
Coordinate thread startup and synchronization using CountDownLatch.
CyclicBarrier
Coordinate cyclic, reusable barrier checkpoints in parallel algorithms.
Concurrency Best Practices
Write thread-safe code using immutable classes, thread-safe collections, and minimizing lock scope.