The Evolution Of The Java Memory Model
Date: 2005-11-17 Time: 11:45 Room: BBL room 471 ----+++ Speaker: [[Students.LeeProvoost][Lee Provoost]] ----+++ Title: The evolution of the Java memory model ----+++ Abstract The Java Memory Model specifies the legal behaviors for a multithreaded Java program. Although it influences every Java programmer, unfortunately for most people it is an unknown concept. Even the targeted audience (virtual machine, compiler and processor implementers) does not have a uniform understanding of the Java Memory Model, because the original model is hard to interpret. This leads for instance to virtual machines that violate the constraints of the model, resulting in unexpected behavior of Java code. The big problem when you start reading papers and articles related to the Java Memory Model is that you should really pay attention to the timeframe when they were written. A good example is the confusion about the semantics of the volatile keyword. This paper tries to give an evolution of the Java Memory Model, starting from the original Chapter 17 from the Java Language Specification of Java 1.0 to the implementation of the JSR-133 specification in the latest Java 5. To clearly illustrate the problems and give a better understanding of the Java Memory Model, a big part of this paper will deal with the famous lazy initialization/double-checked locking programming idiom.