Skalierbare Anwendungen zu schreiben, die die Fähigkeiten der heutigen Multicore-CPUs nutzen und dabei zuverlässig und performant laufen, ist eine Herausforderung. Schnell schleichen sich Race Conditions, Deadlocks und andere Liveness-Fehler ein.
Brian Goetz und ein Team von Experten aus dem Java Specification Request 166 "Concurrency Utilities" beschreiben in “Java Concurrency in Practice” grundlegende Konzepte der Threadsicherheit und die korrekte Implementierung threadsicherer Anwendungen in Java.
Das Buch ist in vier Teile gegliedert:
Die Erklärungen werden von hervorragenden praxisnahen Beispielen begleitet. Die meisten zeigen zuerst häufig gemachte, aber falsche Implementierungen – gefolgt von den richtigen.
Den Autoren gelingt es ein äußerst komplexes Thema auf relativ einfache Weise zu erklären. Besonders hervorzuheben ist die ausgezeichnete Erklärung des Java Memory Models und der “happens-before”-Beziehung.
Dennoch ist das Buch keine einfache Lektüre, und es braucht Zeit, um alle Details zu verstehen. Ich empfehle das Buch mindestens zweimal zu lesen.
Auch wenn das Buch auf dem Stand von Java 6 ist, ist es nach wie vor aktuell. An den Grundlagen der Threadsicherheit hat sich seither nichts geändert, und alle in späteren Java-Versionen hinzugekommenen Features (wie das Fork/Join-Framework, CompletableFuture oder parallele Streams) basieren darauf.
🎧 Geeignet als Hörbuch? Nein, aufgrund zahlreicher umfangreicher Codebeispiele.
P.S.: Wer noch tiefer in die fortgeschrittene Thematik einsteigen möchte, und z. B. über spezifische Arten von Memory Fences und fortgeschrittene Speicherzugriffsmethoden wie Release/Acquire und Opaque lesen möchte, dem empfehle ich als Folgelektüre Doug Leas “Concurrent Programming in Java”.
* 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.