The Java Memory Model

The Java memory model, as described in chapter 17 of the Java Language Specification defines how threads interact through memory. It used to be somewhat unclear and unnecessarily limiting, but some folks decided this was a bad idea and revised it. I was one of those people.

Brian Goetz and I wrote something of a gentle introduction to some of the issues. It may help you to understand the implications of this work.

This page mostly details my contributions to the work. For more of an introduction to the material, click here .

Relevant Publications

Talk Slides

The Java Memory Model Simulator

I have written a simulator for the model. I am fairly well aware that there are bugs in it. I know of at least one example on which it produces incomplete results. If you have questions, or you have suggestions on how it can be improved, or you find errors (especially if you find errors!) email me at jmanson@nospamcs.umd.edu . But take out the "nospam" part first. David Hovemeyer did a good chunk of the work as well.

The Documentation

The Java Version

The Haskell Version

I wrote a version of the 2002 simulator in Java. It doesn't implement the correct model, so it is only really here out of curiosity.

Back to Jeremy Manson's home page