Please note that I have gone through the below thread :
What is an efficient way to implement a singleton pattern in Java?
To summarize, there are important
by glancing at the code (I will look at it more thoroughly hopefully later):
2 is protected because you can't create multiple instances of an enumerated value. INSTANCE is written out...and so when you read it back in, you just cannot create another instance of INSTANCE if it exists. Nice feature of the language :).