This course teaches you how to work with threads and shared data in Java. You learn why threads matter and how to use them in real programs. You also build small simulations to see how these ideas work. You do not need past multithreading experience.
Multithreading Basics
You start with core ideas of threads and how they run. You see why you may use threads and where they can cause problems. You also learn the life cycle of a thread.
- The idea behind multithreading
- Pros and cons of threads
- Thread life cycle
Working With Threads
You learn how to start and stop threads. You also work with tools that help you control how they run.
- Runnable and Thread
- join keyword
- Daemon threads
Inter-Thread Communication
You explore how threads share memory and how to protect shared data. You also learn ways to make threads wait and send signals.
- How threads use memory
- synchronized blocks
- Locks
- wait and notify
- Producer–consumer pattern
- Concurrent collections
- Latches, cyclic barriers, blocking queues
- Delay queues, priority queues, concurrent maps
Key Thread Concepts
You learn advanced ideas that help you build safe and clear concurrent programs.
- volatile keyword
- Deadlocks and livelocks
- Semaphores and mutexes
- Dining philosophers problem
- Library simulation
- Miner game
Executors
You use the Executor framework to run tasks without managing threads by hand.
- Executors
- ExecutorService
Concurrent Collections
You learn structures built for safe access by many threads.
- Latches
- Cyclic barriers
- Delay and priority queues
- Concurrent HashMaps
Simulations
You build simple programs that show how threads solve shared problems.
- Dining philosophers
- Library simulation
Parallel Algorithms
You see how to split work into smaller tasks that run at the same time.
- What parallel computing means
- Parallel merge sort
- Other parallel patterns
Fork-Join Framework
You learn how Fork-Join uses many cores and helps with divide-and-conquer tasks.
- Fork-Join basics
- Finding a maximum in parallel
Stream API
You explore the Stream API and see how parallel streams work.
- Stream API basics with examples
- Sequential vs parallel streams
Big Data and MapReduce
You finish with the MapReduce pattern and how it relates to Fork-Join.
- What MapReduce does
- MapReduce vs Fork-Join