All the lecture videos for this course will be available on
my YouTube
playlist as they are created. I will also post links to the
individual videos and PDF versions of the slides below.
- Week 1
- Walkthrough of Assignment 1a (MP4)
- Course Overview and Logistics (MP4|PDF)
- Overview of Sequential Programming Concepts (MP4|PDF)
- Overview of Concurrent Programming Concepts (MP4|PDF)
- Overview of How Concurrent Programs are Developed in Java (MP4|PDF)
- Week 2
- The History of Concurrency Support in Java (MP4|PDF)
- Introduction to Java Threads (MP4|PDF)
- Overview of the Java Thread Case Study App (MP4|PDF)
- Ways of Giving Code to a Java Thread (MP4|PDF)
- Passing Parameters to a Java Thread (MP4|PDF)
- Java Platform Threads vs. Virtual Threads (MP4|PDF)
- How Java Threads Start and Run (MP4|PDF)
- Key Methods in a Java Thread (MP4|PDF)
- Types of Java Threads (Part 1) (MP4|PDF)
- Types of Java Threads (Part 2) (MP4|PDF)
- Evaluating Java Thread Programming Models (MP4|PDF)
- Overview of the Java Memory Model (MP4|PDF)
- Overview of Java Synchronizers (MP4|PDF)
- The Pervasiveness & Complexity of Java Synchronizers (MP4|PDF)
- Types of Java Synchronizer Capabilities (Part 1) (MP4|PDF)
- Types of Java Synchronizer Capabilities (Part 2) (MP4|PDF)
- Walkthrough of Assignment 1b (MP4)
- Walkthrough of Assignment 1a Frequently Made Mistakes (MP4)
- Week 3
- Synopsis of Java Synchronizer Classes (MP4|PDF)
- Usage Considerations of Java Synchronizer Classes (MP4|PDF)
- Overview of Atomic Operations (MP4|PDF)
- Overview of Java Atomic Operations & Variables (MP4|PDF)
- Introduction to Java Volatile Variables (MP4|PDF)
- Example Application of Java Volatile Variables (MP4|PDF)
- Usage Considerations of Java Volatile Variables (MP4|PDF)
- Introduction to Java Atomic Classes & Operations (MP4|PDF)
- Implementing & Applying Java Atomic Operations (MP4|PDF)
- Implementing Java AtomicLong (MP4|PDF)
- Implementing Java AtomicBoolean (MP4|PDF)
- Applying Java AtomicLong (MP4|PDF)
- Introduction to Java Semaphore (MP4|PDF)
- Structure & Functionality of Java Semaphore (MP4|PDF)
- Week 4
- Preliminary Walkthrough of Assignment 1b Frequently Made Mistakes (MP4)
- Key Methods in Java Semaphore (MP4|PDF)
- Mediating Access to Shared Resources via Java Semaphore (MP4|PDF)
- Coordinating Threads via Java Semaphore (MP4|PDF)
- Java Semaphore Usage Considerations (MP4|PDF)
- Introduction to the Java Executor Framework (MP4|PDF)
- Overview of Thread Pools (MP4|PDF)
- Overview of Java Thread Pools (MP4|PDF)
- Key Interfaces in the Java Executor Framework (MP4|PDF)
- The Java Executor Framework: The Java Executors Class (MP4|PDF)
- Introduction to the Java Executor Interface (MP4|PDF)
- Java Executor Implementation Choices (MP4|PDF)
- Applying Java Executor to the PrimeChecker App (MP4|PDF)
- Evaluating the Pros & Cons of the Java Executor Interface (MP4|PDF)
- Introduction to the Java ExecutorService (MP4|PDF)
- Interfaces Related to the Java ExecutorService (MP4|PDF)
- Key Methods in the Java ExecutorService (Part 1) (MP4|PDF)
- Week 5
- Key Methods in the Java ExecutorService (Part 2) (MP4|PDF)
- Overview of the Java ThreadPoolExecutor (MP4|PDF)
- Applying the Java ExecutorService to the PrimeChecker App (MP4|PDF)
- Evaluating Pros & Cons of the Java ExecutorService (MP4|PDF)
- Walkthrough of Assignment 1b Frequently Made Mistakes (MP4)
- Introduction to Java ReentrantLock (MP4|PDF)
- Structure & Functionality of Java ReentrantLock (MP4|PDF)
- Java ReentrantLock Reentrant Mutex Semantics (MP4|PDF)
- Comparing a Java ReentrantLock and Non-reentrant Lock in Practice (MP4)
- Key Methods in Java ReentrantLock (MP4|PDF)
- Example Application ofJava ReentrantLock (MP4|PDF)
- Java ReentrantLock Usage Considerations (MP4|PDF)
- Week 6
- Introduction to Java ConditionObject (MP4|PDF)
- The Guarded Suspension Pattern (MP4|PDF)
- Common Use Cases for Condition Variables (MP4|PDF)
- Structure & Functionality of Java ConditionObject (MP4|PDF)
- Key Methods in Java ConditionObject (MP4|PDF)
- Example Application of Java ConditionObject (MP4|PDF)
- Java ConditionObject Usage Considerations (MP4|PDF)
- Overview of Java Synchronizers: Built-in Monitor Objects (MP4|PDF)
- Introduction to Java Monitor Objects (MP4|PDF)
- Java Monitor Object Motivating Example (MP4|PDF)
- Evaluating the Java Monitor Object Motivating Example (MP4|PDF)
- Java Monitor Object Synchronized Methods (MP4|PDF)
- Java Monitor Object Synchronized Statements (MP4|PDF)
- Java Monitor Object Synchronized Method Example (MP4|PDF)
- Evaluating Java Monitor Object Synchronized Methods (MP4|PDF)
- Walkthrough of Assignment 2B (MP4)
- Week 7
- Coordination Methods for Java Monitor Objects (MP4|PDF)
- Visualizing the Java Monitor Object Coordination Example (MP4|PDF)
- Implementing the Java Monitor Object Coordination Example (MP4|PDF)
- Java Monitor Object Usage Considerations (MP4|PDF)
- Introduction to Java "Happens-Before" Relationships (MP4|PDF)
- Examples of Java "Happens-Before" Relationships (MP4|PDF)
- Introduction to Safe Publication in Java (MP4|PDF)
- Safe Publication Techniques in Java (MP4|PDF)
- Introduction to the Java ExecutorCompletionService (MP4|PDF)
- Key Methods in the Java ExecutorCompletionService (MP4|PDF)
- Implementation Internals in the Java ExecutiveCompletionService (MP4|PDF)
- Designing a Memoizer for Use With the Java ExecutorCompletionService (MP4|PDF)
- Implementing a Memoizer for Use With the Java ExecutorCompletionService (MP4|PDF)
- Applying the Java ExecutorCompletionService to the PrimeChecker App (MP4|PDF)
- Evaluating the Pros and Cons of the Java ExecutorCompletionService (MP4|PDF)
- Week 8
- Walkthrough of Assignment 3A (MP4)
- Walkthrough of Assignment 2B Frequently Made Mistakes (MP4)
- Managing the Java Thread Lifecycle: Introduction (MP4|PDF)
- Managing the Java Thread Lifecycle: State Machine for Java Threads (MP4|PDF)
- Managing the Java Thread Lifecycle: Layers Involved in Starting a Thread (MP4|PDF)
- Managing the Java Thread Lifecycle: Steps Involved in Starting a Thread (MP4|PDF)
- Managing the Java Thread Lifecycle: Overview of Stopping a Java Thread (MP4|PDF)
- Managing the Java Thread Lifecycle: Stopping a Thread via a Volatile Flag (MP4|PDF)
- Managing the Java Thread Lifecycle: Stopping a Thread via an Interrupt (MP4|PDF)
- Managing the Java Thread Lifecycle: Patterns of Handling Thread Interrupts (MP4|PDF)
- Managing the Java Thread Lifecycle: Java Thread Interrupts vs. Hardware/OS Interrupts (MP4|PDF)
- Managing the Java Thread Lifecycle: Example Application (MP4|PDF)
- Week 9
- Walkthrough of Assignment 3B (MP4)
- Introduction to the Specific Notification Pattern (MP4|PDF)
- Implementing a "Fair" Semaphore Via the Specific Notification Pattern (MP4|PDF)
- Visualizing a "Fair" Semaphore Via the Specific Notification Pattern (MP4|PDF)
- Introduction to Synchronized Collections (MP4|PDF)
- Example Application of Java Synchronized Collections (MP4|PDF)
- Introduction to Concurrent Collections (MP4|PDF)
- Example Application of Java Concurrent Collections (MP4|PDF)
- Week 10
- Overview of Barrier Synchronizers (MP4|PDF)
- Overview of Java Barrier Synchronizers (MP4|PDF)
- Structure and Functionality of Java CountdownLatch (MP4|PDF)
- Key Methods of Java CountDownLatch (MP4|PDF)
- Example Application of Java CountDownLatch (MP4|PDF)
- Walkthrough of Frequently Made Mistakes for Assignment 3A (MP4)
- Preliminary Walkthrough of Frequently Made Mistakes for Assignment 3B (MP4)
- Structure and Functionality of Java CyclicBarrier (MP4|PDF)
- Key Methods of Java CyclicBarrier (MP4|PDF)
- Example Application of Java CyclicBarrier (MP4|PDF)
- Structure and Functionality of Java Phaser (MP4|PDF)
- Key Methods of Java Phaser (MP4|PDF)
- Example Application of Java Phaser (MP4|PDF)
- Week 11
- Walkthrough of Frequently Made Mistakes for Assignment 3B (MP4)
- Overview of the Java Fork-Join Framework (MP4|PDF)
- The Java ForkJoinPool Class (MP4|PDF)
- The Java ForkJoinTask Class (MP4|PDF)
- Subclasses of the Java ForkJoinTask Superclass (MP4|PDF)
- Key Methods in the Java ForkJoinPool Class (MP4|PDF)
- Key Methods in the Java ForkJoinTask Superclass (MP4|PDF)
- Key Methods in the Java RecursiveAction and RecursiveTask Subclasses (MP4|PDF)
- Java Fork-Join Framework Internals: Worker Threads (MP4|PDF)
- Java Fork-Join Framework Internals: Work Stealing (MP4|PDF)
- Week 12
- Maximizing Processor Core Utilization with the Java Common Fork-Join Pool (MP4|PDF)
- Overview of the Java Fork-Join Framework ManagedBlocker Interface (MP4|PDF)
- Applying the Java Fork-Join Framework's ManagedBlocker Interface (MP4|PDF)
- Encapsulating the Java Fork-Join Framework's ManagedBlocker Interface (MP4|PDF)
- Summary of (Common) Fork-Join Pool Benefits (MP4|PDF)
- Evaluating Different Java Fork-Join Framework Programming Models (MP4|PDF)
- Evaluating the applyAllIter() Java Fork-Join Framework Programming Model (MP4|PDF)
- Evaluating the applyAllSplit() Java Fork-Join Framework Programming Model (MP4|PDF)
- Evaluating the applyAllSplitIndex() Java Fork-Join Framework Programming Model (MP4|PDF)
- Comparing and Contrasting All the Java Fork-Join Framework Programming Model (MP4|PDF)
- Week 13
- Introduction to Java FutureTask (MP4|PDF)
- Key Methods in Java FutureTask (MP4|PDF)
- Applying Java FutureTask to Design a Memoizer Cache (MP4|PDF)
- Applying Java FutureTask to Implement a Memoizer Cache (MP4|PDF)
- Applying the Java FutureTask-based Memoizer to the PrimeChecker App (MP4|PDF)
- Evaluating the Pros & Cons of Java FutureTask (MP4|PDF)
- Introduction to Java Readers-Writer Locks (MP4|PDF)
- Evaluating the Pros and Cons of Java Readers-Writer Locks (MP4|PDF)
- Structure and Functionality of Java StampedLock (MP4|PDF)
- Key Methods in Java StampedLock (MP4|PDF)
- Example Application of Java StampedLock (MP4|PDF)
- Usage Considerations for Java StampedLock (MP4|PDF)
- Walkthrough of Frequently Made Mistakes for Assignment 4A (MP4)
- Walkthrough of Assignment 4B (MP4)
- Week 14
- Introduction to the Java ScheduledExecutorService (MP4|PDF)
- Overview of Java ScheduledExecutorService Policies (MP4|PDF)
- Applying the Java ScheduledExecutorService to TimedMemoizer (MP4|PDF)
- Implementing TimedMemoizer with the Java ScheduledExecutorService (MP4|PDF)
- Evaluating the Pros and Cons of TimedMemoizer (MP4|PDF)
- Applying the Java ScheduledExecutorService to TimedMemoizerEx (MP4|PDF)
- Implementing TimedMemoizerEx with the Java Scheduled ExecutorService (MP4|PDF)
- Evaluating the Pros and Cons of TimedMemoizerEx (MP4|PDF)
- Applying TimedMemoizerEx to the PrimeChecker App (MP4|PDF)
- Evaluating the Java ScheduledExecutorService Implementation of PrimeChecker (MP4|PDF)
- The Java Executors Utility Class (MP4|PDF)
- Wrapping Up the Java Executor Framework (MP4|PDF)
- Walkthrough of Assignment 4B Frequently Made Mistakes (MP4)
- All the assignments for this course will be available here as they are created.
Back to my CS Courses home page.