Janeice wrote: 2: What, if any, are the problems with the Singleton pattern, exclusive of the issue of threadsafety (which is supposedly fixed by the "volatile" labeling)
All the other issues in the blog posts I already provided twice, and summarized above.
Regarding the double-locking/threading issue which appears to be a major focus for you:
If you'd read the IBM post you provided, you would have read this:
Editor's note: This article refers to the Java Memory Model before it was revised for Java 5.0; statements about memory ordering may no longer be correct. However, the double-checked locking idiom is still broken under the new memory model. For more information on the memory model in Java 5.0, see "Java theory and practice: Fixing the Java Memory Model" Part 1 and Part 2.
Part 1 of the reference includes the following:
It is worth noting that broken techniques like double-checked locking are still broken under the new memory model, and that "fixing" double-checked locking was not one of the goals of the new memory model effort. (However, the new semantics of volatile allow one of the commonly proposed alternatives to double-checked locking to work correctly, although the technique is still discouraged.)
Part 2 of the reference includes the following:
http://www.ibm.com/developerworks/library/j-jtp03304/#3.2
I really, really hope this stops further discussion about the double-locking thing.