Concurrent Programming in Java: Design Principles and Pattern, 2nd Edition
Rezension von Sven Woltmann
Concurrency ist seit jeher ein First-Class-Citizen in Java. Threads, Monitore (Stichwort synchronized) und Guarded Blocks (wait/notify) sind seit Java 1.0 Teil der Sprache.
„Concurrent Programming in Java“ ist von 1999 und damit auf dem Stand von Java 1.2. Dennoch sind die beschriebenen Herausforderungen der nebenläufigen Programmierung (Sicherheit, Liveness, Performance) auch heute noch aktuell. Das gilt auch für die vorgestellten Prinzipien und Entwurfsmuster, wie Synchronisation und Confinement, Monitore, Guarded Waits und Notifications, Latches, Worker Threads, Futures, Fork/Join und viele mehr.
Davon abstrahierend stellt der Autor komplexere, wiederverwendbare Utility-Klassen für die Initiierung und Koordination nebenläufiger Aktivitäten vor. Die meisten dieser Klassen sind heute – in weiterentwickelter Form – Bestandteil des JDK. Im JavaDoc dieser Klassen (z. B. Semaphore, ReentrantLock, Executor oder CountDownLatch – und auch in neueren wie CompletableFuture oder StampedLock) findest du die Signatur von Doug Lea, dem Autor dieses Buches.
Das Buch ist keine leichte Lektüre. Der Schreibstil ist akademisch und äußerst anspruchsvoll. Ich musste viele Absätze mehr als einmal lesen und zum Verständnis immer wieder Querverweisen zu andere Teilen des Buches folgen. Bei den Beispielen ist es mitunter ratsam, zuerst die Theorie zu lesen, dann den Quellcode und dann noch einmal die Theorie. Alle paar Seiten muss man eine Pause einlegen.
Ich habe mehrere Wochen gebraucht, um das gesamte Werk durchzuarbeiten. Aber die Mühe lohnt sich auf jeden Fall!
Wenn du die Grundlagen dieses Buchs verinnerlicht hast, wirst du in der Lage sein performanten, thread-sicheren Code zu schreiben und nicht-thread-sicheren Code sowie die Ursachen von Race Conditions schnell zu erkennen. Das wird dich zu einem der gefragtesten Java-Programmierer machen.
🎧 Geeignet als Hörbuch? Nein, aufgrund zahlreicher Diagramme und Codebeispiele.
Andere Empfehlungen aus den Genres dieses Buches
Java Concurrency in Practice
Effective Java: Best Practices für die Java-Plattform
Java Generics and Collections
Core Java: Fundamentals (Volume 1)
Core Java: Advanced Features (Volume 2)
Java Puzzlers: Traps, Pitfalls, and Corner Cases
Mastering Lambdas: Java Programming in a Multicore World
Spring Boot 3: So geht moderne Java-Entwicklung – Konzepte und Anwendungen
Der pragmatische Programmierer: Ihr Weg zur Meisterschaft
Get Your Hands Dirty on Clean Architecture: A hands-on guide to creating clean web applications with code examples in Java
Clean Code – Refactoring, Patterns, Testen und Techniken für sauberen Code
Refactoring: Wie Sie das Design bestehender Software verbessern
Clean Craftsmanship: Best Practices, Standards und Ethik für die Softwareentwicklung
The Programmer’s Brain: What Every Programmer Needs to Know About Cognition
Effektives Arbeiten mit Legacy Code. Refactoring und Testen bestehender Software