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.
1.1 Using Concurrency Constructs
1.1.1 A Particle Applet; 1.1.2 Thread Mechanics; 1.1.3 Further ReadingsExcerpts: 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.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.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.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;
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.