T28: Intro to Concurrent Programming in Java 5.0
Monday, Oct 23, from 08:30 to 12:00, F152Historically, concurrent programming has mostly been the domain of systems programmers rather than application developers. However, Java's build-in support for concurrency has turned many application developers, willingly or not, into concurrent programmers. But concurrent programming poses many traps for the unwary, and analyzing, testing, and debugging concurrent programs can be significantly more complicated than with sequential ones.
This tutorial introduces the basic concepts of Java's threading model, describes concepts and mechanisms for building thread-safe classes, and demonstrates design patterns and techniques for constructing concurrent applications in Java. In addition, we explore design techniques for analyzing and resolving the competing design forces (safety, liveness, performance, reusability) present in concurrent software design problems.
Intermediate: It is assumed that the attendee is familiar with basic OO concepts and has a working knowledge of the Java programming language.
Goals: This tutorial targets anyone involved, or planning to get involved, in the development of concurrent object-oriented applications. Participants will acquire comprehensive knowledge of the concurrency support provided by the Java language, as well as some of the tools provided by java.util.concurrent libraries. They will be exposed to a range of design approaches to assist them in developing safe, concurrent applications in Java and other object-oriented languages.
Format: Lecture - but with a handout that includes more material than just a copy of the slides.
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.