Day 1 - Concurency, Thread, Runnable, basic Synchronozation
Day 3 - Thread Continued, Callables and Futures
- Learn the fundamental topics related to concurrency and thread programming
- Understand the general problems (unrelated to the number of kernels)that can be solved using concurrency
- Learn how to take advantage, programmatically, of modern multi-kernel CPU's
As a programmer there are problems that can only (realistically) be solved using concurrency features
Taking advantage of modern multi-kernel CPU requires an understanding of how to program with threads
These lessons will provide student with the necessary background to use these features in any language/platform but are presented via Java
- Exercises Day-1
- Exercises Day-2 (Producer/Consumer and Deadlocks)
- Exercises Day-3 (Using an executor service)
- The well-grounded Java developer -- I recommend reading the introduction, 4.1.1 (and the 4.1 intro), 4.1.3, 4.2.1 (and the 4.2 intro) and 4.6 after the lecture.
- slides
- Watch this SHORT video before the lesson to get a conceptual idea about the Producer-Consumer Problem
- Producer/Consumer Solution using BlockingQueue
- Deadlock
- Slides
- Code Snippets
These are not "read it all" resources, but "get an overview", and "use for looking up things later" resources. You should still skim them to get an overview.
- Java ExecutorService api doc -- The ExecuterService interface.
- Java Executors class -- has static methods to instantiate common executor services.
- Java Future api doc -- the actual future class
- Java CompletableFuture api doc -- the actual CompletableFuture class
- Java callable api doc -- the actual future class
- Slides