Use proper double checked locking as detailed in Item 71 in Effective Java (2d. ed.)