Version 1.0-first_public

lecture: Java Memory Model (JMM) für Anfänger und Fortgeschrittene

Event large

Die Spezifikation des Java Memory Model (JMM) gehört zu der kompliziertesten im Java Umfeld, deren Verstädnis aber in Zeiten von Mehrkernprozessoren unabdienbar ist, um die Java Applikationen zu schreiben, die Nebenläufigkeit korrekt unterstützen.

In diesem Vortrag schauen wir uns die wichtigsten Dinge an, die JMM regelt, nämlich Sichtbarkeitsregel wie Automicy, Ordering und Visibilty. Anhand von Beispielen erklären wir, welche Optimierungen der Just-in-Time Compiler von Java vornehmen kann und warum ein tiefes Verständnis von JMM notwendig ist. In diesem Kontext schauen wir uns Hardware Memory Model (HMM) an und besprechen, wie JMM diese abbildet, welche Memory Ordering Typen HMMs erlauben und welche Effekte es je nach HMM haben kann. Als nächstes erklären wir die Bedeutung und Semantiken der synchronized Blöcken und Lock Implementierung aus dem java.util.concurrent.locks Package, Abstraktionen aus dem java.util.concurrent.atomic Package (inkl. Accumulator Klassen aus Java 8) und Schlüsselwörter wie volatile und final anhand von konkreten Beispielen. Ergänzend schauen wir uns den Tool jcstress an, dessen Ziel ist es zu überprüfen, ob die Nebenläufigkeit korrekt in JVM, Klassenbibliotheken und Hardware unterstützt wird.