Check out the new USENIX Web site. Conference on Object-Oriented Technologies and Systems
 
Click underlined text to go directly to that area COOTS'97 Table of Contents
M5PM   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.

Topics include:

- Java concurrency mechanisms: a crash course

  • Threads
  • Synchronization
  • Scheduling
- Introduction to concurrent design patterns
  • 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
  • Layering
    • Containment
    • Subclassing
    • Within-object concurrency
    • Reflection
- Managing control and flow
  • Control
    • Optimistic methods
    • Pessimistic methods
    • Nested control
    • Transactions
  • Flow
    • Push, pull, exchange
    • Buffering and resource management
- Coordinating concurrent activities
  • Notifications
  • Joint actions
  • Scheduling

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

 


Conference & Hotel InfoProgram at a GlanceTutorialsRegistration Advanced Topics WorkshopTechnical SessionsKeynote AddressCOOTS 97