Concurrent Programming in Java
© 1996-1999 Doug Lea  



1.2 Objects and Concurrency


Readings and Resources

Concurrent programming

Textbooks presenting details on additional concurrent algorithms, programming strategies, and formal methods not covered in this book include:

The concurrency constructs found in the Java programming language have their roots in similar constructs first described by C. A. R. Hoare and Per Brinch Hansen. See Hoare's original paper , as well as papers by them and others in following collections:

A comparative survey of how some of these constructs are defined and supported across different languages and systems may be found in:

Concurrent object-oriented, object-based or module-based languages include Simula, Modula-3, Mesa, Ada, Orca, Sather, and Euclid. More information on these languages can be found in their manuals, as well as in:

Books taking different approaches to concurrency in the Java programming language include:

Most books, articles, and manuals on systems programming using threads concentrate on the details of those on particular operating systems or thread packages. See:

Most texts on operating systems and systems programming describe the design and construction of underlying support mechanisms for language-level thread and synchronization constructs. See, for example:

For a listing of different thread libraries available on unix systems and a discussion of implementation options, see The GNU Portable Threads Page.


Given the diverse forms of concurrency seen in software, it's not surprising that there have been a large number of approaches to the basic theory of concurrency. Theoretical accounts of process calculi, event structures, linear logic, Petri nets, and temporal logic have potential relevance to the understanding of concurrent OO systems. For overviews of most approaches to the theory of concurrency, see:

An eclectic (and still fresh-sounding) presentation of models, associated programming techniques, and design patterns, illustrated using diverse languages and systems, is:

There are several experimental concurrent OO languages based on active objects, most notably the family of Actor languages. See:

A more extensive survey of object-oriented approaches to concurrency can be found in:

Research papers on object-oriented models, systems and languages can be found in proceedings of OO conferences including ECOOP, OOPSLA, COOTS, TOOLS, and ISCOPE, as well as concurrency conferences such as CONCUR and journals such as IEEE Concurrency. Also, the following collections contain chapters surveying many approaches and issues:

Distributed systems

Texts on distributed algorithms, protocols, and system design include:

Related web sites that in turn contain links to others include:

For details about distributed programming using RMI, see:

Real-time programming

Most texts on real-time programming focus on hard real-time systems in which, for the sake of correctness, certain activities must be performed within certain time constraints. The Java programming language does not supply primitives that provide such guarantees, so this book does not cover deadline scheduling, priority assignment algorithms, and related concerns. Sources on real-time design include:

For information on real-time extensions to Java, see the Real-Time Java Extensions group page, as well as the J Consortium page.

Doug Lea
Last modified: Wed Aug 30 19:29:37 EDT 2000