Singleton: How to enforce creating a single object in your program? - private constructor - store a pointer to the single instance in a static variable - when initialized? - static method getInstance that returns the single instance Worry about thread safety - getInstance synchronized: too slow - make static variable private static final, and initialize it statically (in a static {} block, for example). Initializer won't get run until the class loaded, which would be the first time getInstance is called. Thus, no need for double-checked locking as implied by the text.