Both are valid ways of creating a Singleton instance. The former is called lazy initialization and the latter is called eager initialization
Lazy initialization will help if the cost of creation of singleton instance is high. In this case the singleton instance is created only when its required.
On the other hand, eager initialization is by default Thread-safe