Design Patterns for Concurrent Programming: A Java Example
Doug Lea, SUNY Oswego and
David Holmes, Macquarie University
Who should attend:
Anyone involved, or planning to get involved, in the development of concurrent Java applications or applets. You should be familiar with Java and its concurrency features.
What you will learn:
A detailed working knowledge of design strategies for managing concurrency in their applications.
Java directly supports concurrent programming. The use of concurrency adds a new dimension of complexity to application development and introduces its own unique set of problems. This course provides a high-level exposition of design patterns that can be used to manage the complexity of concurrent programming and solve the problems that concurrency introduces. We look at object structures and design rules that can successfully resolve the competing forces (safety, liveness, coordination, reusability) present in concurrent software design problems. Demonstrated using Java, these design patterns and principles apply to a range of concurrent programming environments.
- Java concurrency mechanisms: a crash course
- Introduction to concurrent design patterns
- Managing control and flow
- Pattern-based approach to concurrent object design
- Forces: safety, liveness, coordination, openness, reusability
- Characterization of domains from which patterns of solutions emerge: system-level threads programming, real-time, parallelism, database, distributed systems, reactive systems, experimental O-O systems, sequential O-O design
- Pattern overview
- Within-object concurrency
- Coordinating concurrent activities
- Optimistic methods
- Pessimistic methods
- Nested control
- Push, pull, exchange
- Buffering and resource management
- Joint actions
Doug Lea is a professor and a director of the Software Engineering Laboratory at the New York CASE Center. He is author of Concurrent Programming in Java, and co-author of Object-Oriented System Development. He is the author of several widely-used software packages, as well as articles and reports on object-oriented software development.
David Holmes is a PhD candidate with the Microsoft Research Institute at Macquarie University in Sydney, Australia, where he researches concurrent object-oriented programming in practical contexts. He has practical experience with concurrent programming through work on operating systems, distributed systems, and real-time embedded systems within a university environment.
Back to Tutorial Overview