JavaMemoryModel: Rules that guarantee "Initialization Safety"

From: Joshua Bloch (
Date: Sun Jun 27 1999 - 03:55:19 EDT

-----Original Message-----
From: Paul Haahr <>
To: <>
Date: Saturday, June 26, 1999 12:57 PM
Subject: Re: JavaMemoryModel: Introductions...

>Joshua Bloch wrote
>> Within Sun, I was one of the first people to understand that the
>> memory model was broken in the sense that common lazy initialization
>> algorithms are not guaranteed to work. I convinced the JLS authors
>> (Joy, Steele and Gosling) of this fact about a year ago. I came up
>> with a tweak to Chapter 17 that fixes this and proved it correct.
>Is this tweak publicly available?

   I've shown it to a number of researchers in the field, but I wouldn't say
it's publically available. I'm attaching it, as well as a proof of
correctness that could use a bit of tightening up, but which I believe to be
fundamentally sound. To give you some idea when I was thinking about this
stuff, the file containing the rules had a last-modified date of June '98.

>Has it been accepted as part of the definition of the language?

   No. It's merely a contribution to the ongoing process of figuring out
what we should do. It's somewhat controversial, as it further strengthens
the memory model, which some (e.g., Bill Pugh) believe to be too strong as
it is. (In fact, Bill believes that it's both too weak and too strong.)
Further, it's controversial because it's a Band-Aid(tm) to a memory model
that many (including Bill Pugh, James Gosling, David Stoutamire, and myself)
believe to be fundamentally broken.

>The 2nd edition JVM specification didn't appear to incorporate any such



This is the JavaMemoryModel mailing list, managed by Majordomo 1.94.4.

To send a message to the list, email
To send a request to the list, email and put
your request in the body of the message (use the request "help" for help).
For more information, visit

This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:00:13 EDT