You will face the same complexity if it is accessed in a multi-thread environment.and when being stateless (or immutable) :2 - Singleton can be lazy-instantiated: most of the time, this is a 'fake pro', because for most of the singleton classes, the first time you refer to its class name is to call its (static) getInstance() method, which means, most of the time it is instantiated when its class i