I am merging a CVS branch and one of the larger changes is the replacement wherever it occurs of a Singleton pattern with abstract classes that have a static initialisation bloc
Does this discussion help? (I don't know if it's taboo to link to another programming forum, but I'd rather not just quote the whole discussion =) )
Sun Discussion on this subject
The verdict seems to be that it doesn't make enough of a difference to matter in most cases, though technically the static methods are more efficient.