Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Java Multithreading and Parallel Programming Masterclass
Introduction to the Course
Course Overview (2:04)
How to Get the Most Out of This Course (9:35)
Course Prerequisites and Code Resources (4:37)
General Multithreading Concepts
What Is a Process? (7:07)
What Is a Thread? (4:27)
Threads Versus Processes (10:02)
Parallel Versus Concurrent Versus Asynchronous Versus Non-Blocking (5:22)
Amdahl’s Law (3:45)
Thread Management
Thread Creation (13:47)
Thread Priorities and States (9:25)
Let’s Play with Thread Groups (12:41)
Daemon Threads and User Threads (5:48)
Thread Exception Handling (12:14)
Thread Local Variables and Race Conditions (11:50)
Project - Parallel Text File Processing (20:06)
Thread Synchronization – Part 1
What Is Thread Synchronization? (9:18)
The Synchronized keyword (7:42)
Wait Sets and Notifications (Producer Consumer) (17:22)
Understanding Locks with Parallel Vector Sum (10:23)
What Are Read/Write locks and Spin Locks? (10:57)
Producer Consumer with Condition Variables (5:39)
Let’s Synchronize Jobs with Semaphores (7:51)
Thread Synchronization – Part 2
Parallel Array Search with CountDownLatch (6:16)
Crushing Matrixes with Barriers (9:37)
Parallel Array Processing with Phasers (10:16)
Shift Data Between Threads with Exchangers (3:27)
What Is a Deadlock and How Can We Avoid It? (9:05)
The Volatile Keyword (9:05)
[Project] - Simulating a MapReduce Job with Threads - Part 1 (8:40)
[Project] - Simulating a MapReduce Job with Threads - Part 2 (14:59)
Thread Reusability
Why We Should Reuse Threads (2:49)
Introducing the ThreadPoolExecutor Class (13:09)
Work Queues for ThreadPools (5:40)
Handling Exceptions in ThreadPools (6:26)
Managing Rejected Tasks in a ThreadPool (8:01)
Monitoring the Performance of a ThreadPool (5:03)
Scheduling Tasks with ScheduledThreadPoolExecutor (6:44)
Let’s Play with ForkJoinPools (10:52)
Creating Thread Pools with Executors (4:57)
How to Properly Size a Thread Pool (12:51)
Parallel Algorithms
Bringing Parallelism to Quick Sort (18:54)
Can We Improve Binary Search Through Multithreading? (2:49)
Parallel Matrix Multiplication - The Naive Way (14:42)
Parallel Matrix Multiplication - The Optimal Way (21:58)
Famous Multithreading Problems
Dining Philosophers Problem (12:18)
Readers-Writers Problem (10:51)
Sleeping Barber Problem (12:53)
No-Starve Mutex Problem (10:03)
Multithreading in the Real World
How Can We See What’s Happening Inside a JVM? (14:49)
Introducing Spring Boot Framework (In a Nutshell) (14:19)
unning Asynchronous Workloads on Spring Boot (12:59)
Introducing RxJava Framework (In a Nutshell) (7:45)
Building Parallel Data Pipelines with RxJava2 (19:24)
Unblocking the UI Through Multithreading (With JavaFX) (19:51)
How Can We See What’s Happening Inside a JVM?
This video demonstrates how we can see what’s happening inside a JVM (Java Virtual Machine).
Complete and Continue