Semaphores and mutexes, latches and gates, pools and executors - these are all tools for managing threads within our applications. Each tool has its own properties and purpose and when used correctly can greatly simplify concurrent program design.
The Java programming language has turned a generation of applications programmers into concurrent programmers through its support of multithreading. But concurrent programming poses many traps for the unwary. Designing concurrent programs that can successfully resolve the competing forces of safety, liveness, efficiency, coordination, and reusability, is a task that can be greatly aided through the use of a good set of tools - a good concurrency utility library.
This tutorial presents the components of a proposed concurrency utility library for the Java platform - JSR-166. We will look at the purpose and properties of each tool and how it fits into the concurrent design puzzle. We will also look at proposed extensions to the Java concurrency primitives.
This tutorial targets anyone involved, or planning to get involved, in the development of concurrent object-oriented applications. It is assumed that the attendee is familiar with basic OO concepts and has a working knowledge of the Java programming language. Familiarity with Java's threading and synchronization mechanisms is desirable, but not essential.
Doug Lea is a professor of Computer Science at the State University of New York at Oswego. He is author of the Java Series book "Concurrent Programming in Java: Design Principles and Patterns," co-author of the book "Object-Oriented System Development," and the author of several widely used software packages, as well as articles and reports on object-oriented software development.
David Holmes is Director and Chief Scientist at DLTeCH Pty. Ltd., located in Brisbane, Australia. His work with Java technology has focused on concurrency and synchronization support in the language and virtual machine and he is currently working on a real-time Java virtual machine. David has presented tutorials on concurrent Java programming and design at numerous international object-oriented programming conferences. He is a co-author of the book "The Java Programming Language" (third edition). David completed his Ph.D. at Macquarie University, Sydney, in 1999.