: Languages and Paradigms : Monday : Programming Techniques : Monday Afternoon Tutorials (13:30 - 17:00)
Effective Concurrent Programming with Java 5.0
Pacific Salon 3
Monday, 13:30, half day
David Holmes, DLTeCH Pty Ltd
Tim Peierls, Prior Artisans LLC
Brian Goetz, Quiotix Corp
Joe Bowbeer, Mobile App Consulting
Tutorial number: 30
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. From them you can build many concurrency utilities, 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. 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. We'll take a trip under the covers of the various synchronizer utilities to see how AbstractQueuedSynchronizer can be used to construct custom synchronization tools. Finally, we look at the advanced thread control API—park/unpark—to see how it can be used to simplify advanced thread coordination problems.
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.
David Holmes, DLTeCH Pty Ltd: David Holmes is Director and Chief Scientist of 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 has most recently 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.
Tim Peierls, Prior Artisans LLC: Tim Peierls is President of Prior Artisans, LLC, which he co-founded in 2001. He was previously a Vice President in charge of new technology at Descartes Systems Group, Inc. and Vice President of the Lightstone Group, Inc., which he co-founded in 1989. He was a member of the Expert Groups for JSR 166 (Concurrency Utilities) and JSR 201 (Language Enhancements), that shipped in the Java 5.0 release. Tim is a co-author of the book "Java Concurrency in Practice", to be published in October 2005 by Addison-Wesley. He holds a M.S. in Computer Science from Cornell and a B.S. in Computer Science from Yale.
Brian Goetz, Quiotix Corp: Brian Goetz is a Principal Consultant at Quiotix, a software development and consulting firm in Los Altos, California. He has published over 60 articles on Java development in major industry publications. Brian was a member of the JCP Expert Group for JSR-166 (Concurrency Utilities), that shipped in the Java 5.0 release. He is also a current member of the JCP Expert group for JSR 107 "Java Temporary Caching API". He is a co-author of the book "Java Concurrency in Practice", to be published in October 2005 by Addison-Wesley.
Joe Bowbeer, Mobile App Consulting: Joe Bowbeer is an independent consultant specializing in Java technology in the Java 2 Micro Edition (J2ME) Platform. Joe was a member of the JCP Expert Group for JSR-166 (Concurrency Utilities), that shipped in the Java 5.0 release. He is a contributor to the book "Java Concurrency in Practice", to be published in October 2005 by Addison-Wesley.