Design Concurrent System with Java Course

Course Outline


Myths & Facts


A Client/Server

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



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
Conditions for deadlock
Making deadlock impossible
Evaluating efficiency
Evaluating response time