Entwicklertag IT-Innovationen

Das Java Memory Model

Rolf Schäuble

Dieser Vortrag steht als PDF-Dokument zur Verfügung.

Die Verwendung von Multithreading ist in Java-Anwendungen mittlerweile die Norm. Sei es im Serverumfeld, wo sich die modernen Multicore-CPUs nur durch Parallelisierung voll ausreizen lassen, oder in der GUI-Entwicklung, wo langfristige Operationen auf Worker-Threads ausgelagert werden: single-threaded kommt man heute nicht mehr weit.

Aus diesem Grund sind fundierte Kenntnisse über die nebenläufige Entwicklung für nahezu jeden Java-Entwickler relevant. Neben der korrekten Verwendung von Synchronisierungsmechanismen wie synchronized-Blöcken gehört hierzu auch ein Verständnis des Java Memory Models.

Denn durch die Optimierungstechniken moderner JIT-Compiler und CPUs, wie dem Reordering von Anweisungen und der Verwendung von Caches, kommt es bei nebenläufigen Programmen zu interessanten Phänomenen. So kann es z.B. vorkommen, dass die Veränderungen, die ein Thread an Variablen vornimmt, von einem anderen Thread überhaupt nicht oder in falscher Reihenfolge gesehen werden.

Das Java Memory Model beschäftigt sich mit eben diesen Phänomenen. Es definiert das Verhalten der Java Virtual Machine bei nebenläufigen Programmen, und legt fest, worauf Entwickler sich verlassen können und worauf nicht.

Dieser Vortrag soll einen Einblick in diese Thematik gewähren. Er erklärt die Ursache der Speicherphänomene, und erläutert anschließend auf anschauliche Weise die verschiedenen Aspekte des Java Memory Models.

Relevanz

Links zum Thema

Der Referent:

Rolf Schäuble Rolf Schäuble arbeitet als Senior Software Developer bei der 1&1 Internet AG, wo sein Schwerpunkt auf Java-basierten Backend-Systemen liegt. Zuvor war er als C++-Entwickler tätig. Sein besonderes Interesse gilt der Entwicklung von systemnaher Software und von verteilten Systemen.