12th European Conference on Object-Oriented Programming
Professor Doug Lea
Computer Science Department,
State University of New York at Oswego
Microsoft Research Institute
Macquarie University Sydney
|Day:||Monday morning & afternoon (full day)|
|Room:||C304 (4th floor)|
Concurrent programming has mostly been the domain of systems programmers rather than application developers. Concurrent object-oriented programming has seen a resurgence recently, due mainly to the widespread acceptance of the Java programming language. Java's support for concurrent programming has enticed many developers to try their hand at concurrent applications, yet the use of concurrency within an application poses many traps for the unwary.
This tutorial demonstrates various design patterns and techniques for constructing concurrent object-oriented applications in Java and for managing that concurrency in an effective way. We look at the mechanisms and classes Java provides to support concurrent programming, what guarantees it makes regarding concurrent behaviour and we look at some concurrency issues that arise in the Java libraries. On the design side we look at object structures and design rules that can successfully resolve the competing forces (safety, liveness, efficiency, coordination, reusability) present in concurrent software design problems.
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 a Ph.D. student with the Microsoft Research Institute at Macquarie University, Sydney, researching more adaptable, flexible and re-usable approaches to synchronisation in concurrent object-oriented programs. He has a degree in Computer Systems Engineering and practical experience with concurrent programming through work on operating systems, distributed systems and real-time embedded systems, within a university environment.