Non-volatile field in double-checked lock

Code reviewHard40 minOracle style

Your task

Review this Java lazy-singleton initialization.

Is this double-checked locking correct? If not, what is the precise failure?