T44: Effective Concurrent Programming in Java
Wednesday, Oct 25, from 13:30 to 17:00
The Java programming language has turned a generation of applications programmers into concurrent programmers through its direct support of multithreading. However, the Java concurrency primitives are just that: primitive. Then can be used to build complex concurrent classes and applications, but doing so takes great care as 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 concurrency utility library. The new concurrency utilities in the Java??? 2 Platform Standard Edition 5.0 release provides a range of tools to allow the programmer to develop concurrent applications more effectively. This tutorial gives an overview of the Java concurrency utilities and focuses on some of the more sophisticated uses of those utilities, as well as how to use some of the advanced low-level concurrency features added in Java 5.0. We demonstrate various design patterns and techniques for constructing concurrent applications in Java and for managing that concurrency - with emphasis on the Executor framework and the effective use of Futures.
Intermediate: Attendees must be familiar with basic OO concepts and have a working knowledge of the Java programming language. Familiarity with Java's threading and synchronization mechanisms is desirable, but not essential, but attendees should be familiar with the basic principles behind multithreaded programming.
Goals: This tutorial targets anyone involved, or planning to get involved, in the development of concurrent object-oriented applications in Java. Participants will acquire comprehensive knowledge of the main tools in the concurrency utilities library, and how to use them effectively within their applications.
Brian Goetz, Quiotix Corp: Brian Goetz is a Principal Consultant at Quiotix, a software development and consulting firm in Los Altos, California, and has been a professional software developer for nearly twenty years. He is the author of over 60 articles on Java software development, and his book, Java Concurrency in Practice, will be published in May 2006 by Addison Wesley. Brian serves on the JCP Expert Groups for JSRs 107 (caching) and 166 (concurrency utilities), and has presented at many conferences including JavaOne, OOPSLA, SDWest, and JavaPolis.
David Holmes, Sun Microsystems: David Holmes is Software Engineer at Sun Microsystems, working in the JVM Runtime group. His work with Java technology has focused on concurrency and synchronization support in the language and virtual machine and he has previously been working on a real-time Java virtual machine. David was a member of the JCP Expert Group for JSR-166 "Concurrency Utilities", that shipped in the Java 5.0 release. He has presented tutorials on concurrent Java programming and design at numerous international object-oriented programming conferences over the past eight years. Along with Ken Arnold and James Gosling, he is a co-author of the book "The Java Programming Language" - Third and Fourth Editions. David completed his Ph.D. at Macquarie University, Sydney, in 1999, in the area of synchronization within object-oriented systems.