Java double checked locking
Double check locking is broken. Since initialized is a primitive, it may not require it to be volatile to work, however nothing prevents initialized being seen as true to the non-syncronized code before instance is initialized. EDIT: To clarify the above answer, the original question asked about using a boolean to control the double check … Read more