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.
* Hinweis: Wir teilen gerne unsere Lieblingsbücher mit dir! Als Amazon-Partner verdienen wir eine kleine Provision bei Einkäufen, die du über unsere Links tätigst. Dies hilft uns, weiterhin Inhalte zu erstellen, die dir gefallen.