-
Course
- Core Tech
Applying Concurrency and Multi-threading to Common Java 8 Patterns
If you want to be able to write multi-threaded Java apps, this course is for you. You'll learn about problems with concurrent programming on multicore CPU, and false sharing. You'll also be introduced to the Java Memory model and more.
What you'll learn
Every developer needs to know how to write multi-threaded applications in Java. This course, Applying Concurrency and Multi-threading to Common Java 8 Patterns, is a precise presentation of all the fundamentals you'll need. You'll learn about the main problems of concurrent programming on multicore CPU, including race condition, synchronization, reentrant lock, and deadlock. Next, you'll cover how your application use is moved from the main memory to the CPU caches and how false sharing can occur. Finally, you'll be introduced to the Java Memory Model and the notion of happen-before. By the end of this course, you will understand how concurrency and multi-threading work on a variety of Java patterns and you'll be able to use this knowledge to create better apps.
Table of contents
- Introduction: What Are You Going to Learn in This Course? | 2m 1s
- Agenda: What Should You Know to Follow This Course? | 2m 12s
- Definition of a Thread, Existing Thread in Java | 1m 20s
- What Does It Mean for Tasks to Happen at the Same Time? | 2m 47s
- Happening at the Same Time on Multicore CPU | 2m 47s
- CPU Time Sharing Using a Thread Scheduler | 1m 55s
- What Is a Race Condition in Concurrent Programming? | 1m 57s
- Analysis of a Race Condition in the Singleton Pattern | 3m 3s
- Synchronizing Code to Prevent Race Conditions | 3m 19s
- Understanding the Lock Object in Synchronization | 2m 30s
- Understanding Synchronization Over Multiple Methods | 3m 47s
- What Is a Reentrant Lock? | 2m 13s
- What Is a Deadlock? | 2m 34s
- Quick Overview of the Runnable Pattern to Launch Threads | 2m 10s
- Live Coding: Launching Your First Thread | 2m 52s
- Live Coding: A Race Condition in Action, and How to Fix It | 3m 48s
- Live Coding: A Dead Lockin Action, and How to Fix It | 5m 10s
- Wrap-up of the Module | 1m 28s
- Version Check | 15s
- Introduction: Agenda of the Module | 1m 34s
- Launching a Task in a New Thread with the Runnable Pattern | 2m 51s
- How to Stop a Thread Using the interrupt() Method | 3m 25s
- Implementing a First Producer/Consumer Example | 2m 9s
- A First Synchronized Version of the Producer/Consumer | 2m 56s
- What Is Needed to Fix This First, Flawed Version | 2m 13s
- Understanding How the wait() and notify() Methods Work | 2m 58s
- Fixing the Producer / Consumer Code Using Wait / Notify | 1m 29s
- Understanding How Synchronization Works with wait() and notify() | 2m 38s
- Live Coding: Unsynchronized, Flawed Producer/Consumer in Action | 3m 5s
- Live Coding: Synchronized, Flawed Producer/Consumer in Action | 2m 29s
- Live Coding: wait/notify, Correct Producer/Consumer in Action | 1m 36s
- Understanding the States of a Thread | 1m 30s
- Understanding the State Diagram of a Thread | 2m 58s
- Wrap-up on the State of a Thread | 1m 25s
- Wrap-up of the Module | 1m 8s
About the author
Passionate about programming computers for over 20 years, Jose made his debut in assembler and C, C for SIMD parallel machines before adopting Java as an object-oriented language. Assistant professor in Paris North University for more than 15 years, Jose also brings his expertise to many projects, in various industrial fields.
More Courses by Jose