According to many, the somewhat common Double-Checked Locking idiom is broken for java unless you\'re running 1.5 or later and use the volatile
keyword.
A b
I found a very good article about that question : http://www.javamex.com/tutorials/double_checked_locking_fixing.shtml
It clearly states 3 ways to fix DCL. And it looks like in your question, the Helper field should be declared volatile, otherwise it doesn't work.
When it comes to usage, i.e. RoboGucie in your case, I think I would favor the class loader method mentionned in the article. It's more clear to me and as efficient.