Nach dem exzellenten, aber schon etwas alten "Concurrent Programming in Java" von Doug Lea hat sich auf dem Buchmarkt zu diesem Thema recht wenig getan. Mit "Java Concurrency in Practice" liegt jetzt ein hochaktuelles, sehr praxisorientiertes und umfassendes Werk zu diesem Thema vor. Goetz et al. gehen weniger auf theoretische Grundlagen und Design Patterns ein als CPIJ, sondern konzentrieren sich vielmehr auf die wichtigsten Probleme von nebenläufigen Java-Programmen und Lösungsansätze. Ihre Beschreibung des Java-Speichermodells ist ausgezeichnet und vermittelt sehr deutlich, wie wichtig dessen Verständnis ist. Die Autoren trennen sauber zwischen Problemen der Sichtbarkeit und "race conditions" und machen deutlich, welche Java-Konstrukte sich in welcher Situation wie verhalten. Das Thema Performance wird gut behandelt, dabei wird auch die nötige Unterscheidung zwischen uncontended/contended Locks hervorgehoben.
"Explicit Locks" und die meisten anderen Goodies der Concurrency-Library von Java 5 sind nicht das Hauptthema, werden aber ausreichend gewürdigt. Hin und wieder gibt es auch interessante Ausblicke auf Java 6, die vielleicht die eine oder andere Designentscheidung beeinflussen könnten.
Fazit: höchst empfehlenswert!