Can somebody please tell me how does a singleton object behaves when multiple threads tries to access it. Does it get locked or does each thread carries a separate but identical copy of the same object when multiple threads tries to access it.? Any link white paper will greatly be appreciated .
Thanks a in advance
Right, the singleton behaves just like any other object once it is created. It has no special cases for multi-threaded applications, no protections against concurrent activities, and no inherent synchronization. You must write all those protections yourself.
Joined: Jul 27, 2005
Thank you so much for the quick response Rob and Steave.
Though i am still little confused about what happens internally when thread tries to invoke method on an object which is of Truly singlton class.Does the thread takes the LOCK over the object and then invoke the method ? If this is true then I guess all singlton will be inherently synchronized . Am I thinking in right direction ? Or there is something else that is happening ?
Thanks in advance
Unless you've explicitly made the singleton synchronized in some way, there is no locking at all. You will need to add all synchronization yourself, you don't get it "for free" because your object happens to be a singleton. The compiler doesn't know it is, the JVM doesn't know it is, only you and people using it know.