I am wondering which one is better in practice in a multithreaded environment. I understand Singleton as Enum type creates an instance when the class is loaded. Other than t
Often in multi-threaded applications, simpler, easier to understand code is more likley to work.
To my mind the first example is significantly simpler than the second and that is what matters.
The main pro of using an enum
is its much simpler and the more complicated example is not justified. The double locking example allows you to change the singleton in interesting way for unit tests, but I believe what this gives you can be solved another way.