First, let me talk about the "single" in singleton: Always ask yourself under which scope something is "single". Do you want it really be only once per *running process*? This will severly harm the testability of your code. Most of the time, the "single" means "only once from your current application domain", but you wouldn't care, for example, if your main-method gets run twice magically, then you also create two instances..
For example, this is true for most things like "database connection", "logger", "output console" etc.. You don't care whether they are really unique in your *system process*, but whether they are unique in your *current application*. If it happens to share a process with another instance of your application - fine. (Because that's true for most unit test cases).
There are numerous articles about this and my feeling is that the community learnt a lot since the GoF book about why singletons are dangerous and what you can do wrong with them. For this, try to avoid simple static-singleton concepts. My recommendation is: Always strive for the "least singleton possible".
(Obviously, there are singletons that make sense in a "single process" - way. E.g. getting your process handle, setting your process priority... ;-)
If "single to the application" is enough, don't go for "single to the whole process". (Remark: There are cases where you want singletons span more than one process. You know if you end up writing Process-Mutexes or network-locks.. ;) )
Now, your question about "static methods" vs "static instance" gets a bit easier to answer. A static instance of one class is the right step towards a "singleton that is actually single only to your application". I'd prefer the second version. It makes it easier later, to e.g. inject a fake-object when you are testing your code from unit tests.
Watch this for a good summary, if you want more on this topic:
http://www.youtube.com/watch?v=-FRm3VPhseI
Ciao, Imi.
Edit: Oh, and Denis is right. The constructor is
not private by default. You should declare an empty constructor in the private: section of your class.