Home Page -------------------
[Home Page] - [Reviews Main]
-------------------

Book Review
Concurrent Programming in Java 2ed by Doug Lea
Highly Recommended
ISBN: 0 201 31009 0       Publisher: Addison-Wesley       Pages: 411       Price: £30.99
Categories:   java     parallel systems    
Reviewed by Ian Bolland in C Vu 12-4 (Jul 2000)
Most treatments of Java multi-threading follow the same lines. They present a small example, often a variant of debit- credit, to show the dangers of letting multiple threads access the same variable at the same time and then go on to recommend synchronised methods as the solution to the problem. Now as far as it goes, this is good advice. However synchronised methods are not always the best solution to concurrency problems. Firstly, synchronisation adds an overhead to method calls and this penalises all clients; even those who do not require thread safety. Secondly, it opens up the possibility of deadlock and a lot of effort may be required to prevent deadlock. Finally, it does not by itself prevent clients from getting erroneous results. For example, consider the following code to process all elements in a Vector vec:

for(int i=0; i<vec.size(); i++)
	process(vec.elementAt(i));
If other threads are simultaneously modifying vec , this loop may process elements twice, may skip elements and may throw an ArrayIndexOutOfBoundsException even though all method calls are synchronised.

This book discusses these and many other, problems in depth. It explains the problems, the alternative solutions and the factors that would cause you to prefer one solution to another. It is intended for intermediate to advanced level Java programmers. Naturally it contains a lot of material that is Java-specific, such as synchronised methods and blocks, wait/notify and the Java memory model. However, the author clearly distinguishes between general concurrency issues and Java-specific ones, so the book will be valuable to anyone using concurrency in any environment.

Sample code and production-quality utilities for handling concurrency can be downloaded from the author's web site. Usefully, the author has placed this material in the public domain, so it can be freely reused.

After more than ten years experience in several languages and environments, I thought I knew quite a lot about concurrent programming. After reading this book, I now know a lot more. Highly recommended.


Other Authors with the same surname

Lea
Concurrent Programming in Java - Design Principles by Doug Lea [Recommended]  (Reviewed May 1997)
Java for 3D and VRML Worlds by Rodger Lea  (Reviewed Sep 1997)


Last Update - 13 May 2001.

To link to this review, please use the URL: http://www.accu.org/bookreviews/public/reviews/c/c002180.htm

Copyright © The Association of C & C++ Users 1998-2000. All rights reserved.

Mirrored from http://www.accu.org/