Concurrent Programming in Javatm
Design principles and patterns
Online Supplement

cover

This is the supplement to the book Concurrent Programming in Java: Design Principles and Patterns by Doug Lea (ISBN 0-201-31009-0). Second edition published by Addison-Wesley, November 1999.

Most supplement pages are grouped by sections of the second edition. These pages include notes, updates, follow-ups, and extended examples. They also contain the full Further Readings sections from the book, augmented with links to online resources. They are all constantly under construction.

0 General Resources

1 Concurrent Object-Oriented Programming

1.1 Using Concurrency Constructs
1.1.1 A Particle Applet; 1.1.2 Thread Mechanics; 1.1.3 Further Readings

Excerpts: Java Concurrency Constructs -- HTML versions of parts of sections 1.1, 2.2, and 3.2 describing mechanics.

1.2 Objects and Concurrency
1.2.1 Concurrency; 1.2.2 Concurrent Execution Constructs; 1.2.3 Concurrency and OO Programming; 1.2.4 Object Models and Mappings; 1.2.5 Further Readings
1.3 Design Forces
1.3.1 Safety; 1.3.2 Liveness; 1.3.3 Performance; 1.3.4 Reusability; 1.3.5 Further Readings
1.4 Before/After Patterns
1.4.1 Layering; 1.4.2 Adapters; 1.4.3 Subclassing; 1.4.4 Method Adapters; 1.4.5 Further Readings;

2 Exclusion

2.1 Immutability
2.1.1 Applications; 2.1.2 Construction;
2.2 Synchronization
2.2.1 Mechanics; 2.2.2 Fully Synchronized Objects; 2.2.3 Traversal; 2.2.4 Statics and Singletons; 2.2.5 Deadlock; 2.2.6 Resource Ordering; 2.2.7 The Java Memory Model; 2.2.8 Further Readings;

Excerpt: Synchronization and the Java Memory Model -- HTML version of main discussion in section 2.2 of how the memory model impacts concurrent programming.

2.3 Confinement
2.3.1 Confinement Across Methods; 2.3.2 Confinement Within Threads; 2.3.3 Confinement Within Objects; 2.3.4 Confinement Within Groups; 2.3.5 Further Readings;
2.4 Structuring and Refactoring Classes
2.4.1 Reducing Synchronization; 2.4.2 Splitting Synchronization; 2.4.3 Read-Only Adapters; 2.4.4 Copy-on-Write; 2.4.5 Open Containers; 2.4.6 Further Readings;
2.5 Using Lock Utilities
2.5.1 Mutexes; 2.5.2 Read-Write Locks; 2.5.3 Further Readings;

3 State Dependence

3.1 Dealing with Failure
3.1.1 Exceptions; 3.1.2 Cancellation; 3.1.3 Further Readings;

Excerpt: Cancellation -- HTML version of main discussion in section 3.1 of thread cancellation techniques.

3.2 Guarded Methods
3.2.1 Guarded Suspension; 3.2.2 Monitor Mechanics; 3.2.3 Guarded Waits; 3.2.4 Notifications; 3.2.5 Timed Waits; 3.2.6 Busy Waits;
3.3 Structuring and Refactoring Classes
3.3.1 Tracking State; 3.3.2 Conflict Sets; 3.3.3 Subclassing; 3.3.4 Confinement and Nested Monitors; 3.3.5 Further Readings;
3.4 Using Concurrency Control Utilities
3.4.1 Semaphores; 3.4.2 Latches; 3.4.3 Exchangers; 3.4.4 Condition Variables; 3.4.5 Further Readings;
3.5 Joint Actions
3.5.1 General Solutions; 3.5.2 Decoupling Observers; 3.5.3 Further Readings;
3.6 Transactions
3.6.1 Transaction Protocols; 3.6.2 Transaction Participants; 3.6.3 Creating Transactions; 3.6.4 Vetoable Changes; 3.6.5 Further Readings;
3.7 Implementing Utilities
3.7.1 Acquire-Release Protocols; 3.7.2 Delegated Actions; 3.7.3 Specific Notifications; 3.7.4 Further Readings;

4 Creating Threads

4.1 Oneway Messages
4.1.1 Message Formats; 4.1.2 Open Calls; 4.1.3 Thread-Per-Message; 4.1.4 Worker Threads; 4.1.5 Polling and Event-Driven IO; 4.1.6 Further Readings;
4.2 Composing Oneway Messages
4.2.1 Composition; 4.2.2 Assembly Line; 4.2.3 Further Readings;
4.3 Services in Threads
4.3.1 Completion Callbacks; 4.3.2 Joining Threads; 4.3.3 Futures; 4.3.4 Scheduling Services; 4.3.5 Further Readings;
4.4 Parallel Decomposition
4.4.1 Fork/Join; 4.4.2 Computation Trees; 4.4.3 Barriers; 4.4.4 Further Readings;
4.5 Active Objects
4.5.1 CSP; 4.5.2 Further Readings;

Index


All of these documents are copyright © 1996-1999 by the author or publisher. Please do not copy or mirror. I cannot supply collected standalone copies. If you have any comments or suggestions, please send mail to dl@cs.oswego.edu.

Java is a trademark of Sun Microsystems.


Doug Lea
Last modified: Tue Apr 18 08:07:19 EDT 2000