There are many ways to implement singleton - this one is the most odd I have ever seen. If it's not singleton - note that two instances of this class cannot be used concurrently.
If you use only one instance of this class it will not return any gibber if only variable Bar
is declared as volatile
in this case. Otherwise strange things, such as 0-returns can occur.