Mastering Threads LIVE - June 2020
From the 15-19 June 2020, we are running our Mastering Threads Course LIVE.
We live in an age of an increasing need for high speed computing. We can no longer wait for faster CPUs. To push computers to their limits, we must harness the power of parallel and concurrent computing. But we must do this correctly and safely, and to do so, we need a deep understanding of the concepts. And lots of practice!
We start on day 1 with the basics of threads and jump in at the deep end by writing a thread pool. Day 2 finds us marching deeper into the labyrinth. We look at the Secrets of Concurrency: the laws that help us to write correct threaded code. Our journey continues on day 3 with the higher-level constructs that make threading much easier to use. This leads us on day 4 to diagnosing race conditions, deadlocks and other threading problems.
What you'll learn - and how you can apply it
- Correct use of the synchronized keyword
- How to communicate between threads using signals
- How to correctly manage thread interruptions
- Visibility of data between threads
- Higher-level constructs such as ThreadPoolExecutor, CompletionService and various synchronizers
- Detecting and solving threading issues
How do these LIVE classes work?
We have two sessions per day with the same content (but most likely, different student questions). The early session is scheduled at a good time for Europe/APAC from 10am-12pm London time (that is 11am-1pm Berlin, 2:30-4:30pm Bangalore, and 7-9pm Sydney). The later session is at a time more convenient for America/Europe from 9-11am Los Angeles time (that is 12-2pm New York, 5-7pm London, 6-8pm Berlin, 9:30-11:30pm Bangalore).
Some sessions can be shorter than 2 hours, and some may be a bit longer. We try our best to keep it below 2 hours. It all depends on how many questions we get. Each session ends with exercises that you should try to complete before the next session. We begin the sessions with walkthroughs and questions from the previous day. Recordings of each day become available within a couple of hours after completion to help you review and prepare for the next day.\
Once you enrol in this course, you are automatically signed up for the webinar. Our system will send you login details. These are personal to you so please do not share them (otherwise you might lose access to the course).
- Welcome to the course and overview of what design patterns are and why we should care about them
1: Basics of Threads
- Why Use Threads?
- Threading Models
- Parallel Computing vs Concurrent Computing
- Java Memory Model (JSR 133)
- Creating New Threads
- Shared Memory with Multithreading
- Thread States
- Inter-thread Communication
Exercises for day 1 to complete before day 2
- Exercise/activity description: First exercise is to write a thread pool, learning how inter-thread communication is done
- We will walk through the exercises from day 1 and do a quick revision
2: The Secrets of Concurrency
- Sabotaged Doorbell
- Distracted Spearfisherman
- Overstocked Haberdashery
- Blind Spot
- Leaked Memo
- Corrupt Politician
- Cretan Driving
- Sudden Riches
- Uneaten Lutefisk
Exercises for day 2 to complete before day 3
- Exercise/activity description: We improve the inter-thread communication by fixing the handling of the InterruptedException
- We will walk through the exercises from day 2 and do a quick revision
3: Applied Threading Techniques
- Callable and Future
- Unhandled Exceptions
- Stopping Threads
- Shutdown Hooks
Exercises for day 3 to complete before day 4
- Exercise/activity description: Our thread pool is refactored to use blocking queues for inter-thread communication
- We will walk through the exercises from day 3 and do a quick revision
4: Threading Problems
- Race Conditions
- Analyzing Thread Dumps
Exercises for day 4 to complete before day 5
- Exercise/activity description: We need to detect and fix race conditions and deadlocks in these exercises
- We will walk through the exercises from day 4 and do a quick revision
- Course wrap-up and next steps
- This training is for intermediate to advanced Java programmers wanting to learn how threading works in Java.
- Students should download and install the exercises found in the Resources chapter of the course material
- Java Concurrency in Practice by Brian Goetz
Heinz Kabutz is the author of The Java Specialists’ Newsletter, a publication enjoyed by tens of thousands of Java experts in over 145 countries. His book “Dynamic Proxies (in German)” was #1 Bestseller on Amazon.de in Fachbücher für Informatik for about five minutes until Amazon fixed their algorithm. Thanks to a supportive mother, he has now sold 5 copies.
Heinz’s Java Specialists’ newsletter is filled with amusing anecdotes of life on the Island of Crete. He is a popular speaker at all the best Java conferences around the world, and also at some of the worst. He teaches Java courses in classrooms around the world, where his prime objective is to make absolutely sure that none of his students fall asleep. He is not always successful.