This ensures that Foo is lazily initialized when the getFoo() method is first called, because of the implications of the static keyword in the context of class initialization. Also, because of static initilization there's no need for synchronization. See the JLS for more details, because these are all the details I remember, having read Java Concurrency in Practice a good while ago. [ September 11, 2008: Message edited by: Jelle Klap ]