- What is a thread?
- Differences between threads and processes.
- Benefits of using threads.
- Creating and starting threads.
- Synchronization and coordination between threads.
- Thread states: new, runnable, blocked, terminated.
- Thread priorities and scheduling.
- Shared resources and race conditions.
- Critical sections and mutual exclusion.
- Synchronized blocks and methods.
- Volatile variables.
- Communication between threads using wait() and notify().
- Producer-consumer problem and solutions.
- Blocking queues and condition variables.
- Joining threads.
- Thread interrupts and interruption handling.
- Thread timeouts and timed waiting.
- Introduction to thread pools.
- Executor framework in Java.
- Creating and managing thread pools.
- Benefits and drawbacks of thread pools.
- Parallel programming concepts.
- Data parallelism vs. task parallelism.
- Parallel algorithms and data structures.
- Fork-Join framework in Java.
- Locks and mutexes.
- Semaphores and barriers.
- Atomic variables.
- Read-write locks.
- Thread-local variables.
- Inheritable thread-local variables.
- Use cases and benefits of thread-local storage.
- Thread starvation and deadlock.
- Thread contention and scalability.
- Thread profiling and debugging.
- Advanced synchronization primitives (e.g., CountDownLatch, CyclicBarrier).
- Thread-safe collections (e.g., ConcurrentHashMap, CopyOnWriteArrayList).
- Concurrent data structures (e.g., BlockingQueue, ConcurrentLinkedQueue).
- Asynchronous programming and futures.
- Reactive programming and event-driven architectures.
- Actor-based concurrency models (e.g., Akka framework).