||New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About||
Keywords: Java, threading, concurrent programming
Title: Java Concurrency In Practice
Author: Brian Goetz
Publisher: Addison Wesley
Level: Intermediate Java
Verdict: Excellent - highly recommended
Writing multi-threaded programs has always been tricky - it's complicated and scary and best avoided if you can. Except that these days it's getting harder and harder to avoid - multi-CPU systems, multi-core CPUs, complex GUIs? Writing thread-safe, concurrent programs is no longer the preserve of the specialist. Java has long had support for concurrency, but each new release has improved on the last. Now, with Java 5 out in the wild and Java 6 looming, is a good time to dive into the subject once and for all. And, for the intrepid explorer, excellent help is at hand in the form of 'Java Concurrency In Practice'.
There is no assumption of prior knowledge or experience of threading, though obviously there's an assumption that the reader knows about Java programming. The opening section of the book looks at the basics of thread safety, at the process of creating and sharing objects and variables and so on. There are plenty of code snippets and the writing is impeccably clear and easy to follow. As a piece of technical exposition it's excellent.
The second part of the book looks at how concurrent applications should be structured - here the focus is on task execution, cancellation and shut-down, thread pooling and GUI applications. As with the first part of the book, complex topics are explained clearly and with lots of code to illustrate what's going on.
The next section looks at the topics of liveness, performance, scalability and the thorny issue of testing concurrent processes. The final part of the book moves on to the more advanced topics: creating explicit locks, building custom synchronisers and the Java Memory Model.
The aim of the book is to provide the reader with the tools and understanding to build reliable, testable, scalable concurrent programs that perform well. This it does very well - not by avoiding the theoretical basis for concurrency, but by supplementing this with clearly focused practical examples.
If you're interested in learning about multi-threaded Java programming, then there's no better resource than this. It gets a very solid TechBookReport recommendation.