Srinivas,
I could appreciate why the condition (instance == null || ! initialized)
might be helpful, but was not clear on:
    initialized = (instance.getClass() != null);
Why did you feel that:
    initialized = true;
would not be sufficient.
> -----Original Message-----
> From: owner-javamemorymodel@cs.umd.edu
> [mailto:owner-javamemorymodel@cs.umd.edu]On Behalf Of
> Srinivas_Kunani@toyota.com
> Sent: Wednesday, 17 September 2003 3:49 p.m.
> To: javaMemoryModel@cs.umd.edu
> Subject: JavaMemoryModel: Will this solution work?
>
>
> I am trying to get an understanding of the subtleties of the Double-Check
> locking problem in Java
>
> Will the following code resolve the problem. If it will not, can somebody
> please explain why not.
>
> Thanks in advance for your responses.
>
> Srinivas.
>
> ...
> private static Singleton instance;
> private static Object mutex = new Object();
> private static boolean initialized = false;
>
> private Singleton() {
> }
>
> public static Singleton getInstance() {
> if (instance == null || ! initialized) {
>     synchronized(mutex) {
>          if (instance == null ) {
>              instance = new Singleton();
>              initialized = (instance.getClass() != null);
>          }
>     }
> }
> return instance;
> }
> ...
>
-------------------------------
JavaMemoryModel mailing list - http://www.cs.umd.edu/~pugh/java/memoryModel
This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:00:51 EDT