Design Concurrent System with Java Course

Course Outline

Overview

Myths & Facts

 

A Client/Server

Analyzing performance
Defining performance via tests
Increasing throughput using threads
Threading basics
Java 5 Executor Framework
Futures
Deadlock, a first look

 

Producer-Consumer

Review non-threaded example
Analyzing performance
Predicting performance increase after threading

 

Sharing & Guarding

A mental model for where objects live
How do multiple threads cause problems
How can we demonstrate this using unit tests
Relating Java Source Code to Java Byte-Code
Synchronized & guarding access
Atomic Primitives
Dependent State
Client-based locking
Server-based locking
Fixing producer-consumer
Analyzing contention
Removing contention and limiting the size of critical sections

 

Avoiding Concurrent Update

Dining Philosophers
Deadlock
Conditions for deadlock
Making deadlock impossible
Evaluating efficiency
Evaluating response time