English | MP4 | AVC 1920×1080 | AAC 44KHz 2ch | 40 lectures (5h 26m) | 1.91 GB
Become an expert in Multithreading, Concurrency & Parallel programming in Java, with strong emphasis on high performance
If you had your own jet plane, would you drive it to the grocery store, or fly it on a tour around the world?
Today every computer and phone comes with immense computing power and multiple cores that allow for full parallelism. In this course, you will go on a journey to learn all the fundamental tools you need to become a confident and successful multithreaded application developer. Using multithreading and concurrency we will learn to get the most out of our computer to truly make it fly!
Teaching Philosophy
The course is designed to teach you “how to fish”. Instead of memorizing classes, libraries, or Java APIs, we will learn the fundamentals of multithreaded programming, starting from the complete basics, all the way to the very advanced topics in multithreading.
All lectures include the right theory and are accompanied by practical examples from relevant fields such as:
- User Interface applications
- Image Processing
- Web Applications
- Computational programs
- And others
It’s a practical course that is meant to save you time. Instead of filling hours of material, I hand-picked the most important topics based on my practical experience.
We will learn
- Operating Systems fundamentals and motivation for multithreading and concurrency.
- The basics of multithreading – how to create threads in Java as well as communicate between threads in Java.
- Performance considerations and design patterns of multithreaded and parallel applications. Optimizing for latency or throughput.
- Data sharing between threads in Java. All the pitfalls and challenges as well as the solutions and best practices.
- Advanced lock-free algorithms and data structures for increased responsiveness and performance.
Table of Contents
Introduction
1 Motivation Operating Systems fundamentals Part 1
2 Operating Systems Fundamentals Part 2
Threading fundamentals Thread Creation
3 Tips about Coding Lectures and Debugging Instructions
4 Threads Creation Part 1 Thread Capabilities Debugging
5 Threads Creation Part 2 Thread Inheritance
6 Thread Creation MultiExecutor Solution
Threading fundamentals Thread Coordination
7 Thread Termination Daemon Threads
8 Joining Threads
9 Multithreaded Calculation Solution
Performance Optimization
10 Introduction to Performance Optimizing for Latency Part 1
11 Optimizing for Latency Part 2 Image Processing
12 Additional Resource Image Processing Color Spaces Extraction Manipulation
13 Optimizing for Throughput Part 1
14 Optimizing for Throughput Part 2 HTTP server Jmeter
Data Sharing between Threads
15 Stack Heap Memory Regions
16 Resource Sharing Introduction to Critical Sections
The Concurrency Challenges Solutions
17 Critical Section Synchronization
18 Atomic Operations Volatile Metrics practical example
19 Min Max Metrics Solution
20 Race Conditions Data Races
21 Locking Strategies Deadlocks
Advanced Locking
22 ReentrantLock Part 1 tryLock and interruptible Lock
23 ReentrantLock Part 2 User Interface Application example
24 Reentrant Read Write Lock Database Implementation
25 Product Reviews Service Solution
InterThread Communication
26 Semaphore Scalable Producer Consumer implementation
27 Condition Variables All purpose InterThread Communication
28 Objects as Condition Variables wait notify and notifyAll
29 Simple CountDownLatch Solution
LockFree Algorithms DataStructures Techniques
30 Introduction to Nonblocking Lock Free operations
31 Atomic Integers Lock Free ECommerce
32 Atomic References Compare And Set LockFree High Performance Data Structure
Threading Models for High Performance IO
33 Introduction to Blocking IO
34 Thread Per Task Thread Per Request Model
35 Asynchronous Non Blocking IO with Thread Per Core Model
Virtual Threads and HighPerformance IO
36 Introduction to Virtual Threads
37 High Performance IO with Virtual Threads
38 Virtual Threads Best Practices
Beyond Multithreading Final Lecture
39 Distributed Systems Big Data Performance
40 Bonus Lecture Keep Learning
Resolve the captcha to access the links!