Inner synchronization on the same object as the outer synchronization

Posted by Yaneeve on Stack Overflow See other posts from Stack Overflow or by Yaneeve
Published on 2010-03-17T15:15:11Z Indexed on 2010/03/17 15:21 UTC
Read the original article Hit count: 899

Recently I attended a lecture concerning some design patterns:

The following code had been displayed:

public static Singleton getInstance()
{
  if (instance == null)
  {
    synchronized(Singleton.class) {      //1
      Singleton inst = instance;         //2
      if (inst == null)
      {
        synchronized(Singleton.class) {  //3
          inst = new Singleton();        //4
        }
        instance = inst;                 //5
      }
    }
  }
  return instance;
}

taken from: Double-checked locking: Take two

My question has nothing to do with the above mentioned pattern but with the synchronized block:

Is there any benefit whatsoever to the double synchronization done in lines 1 & 3 with regards to the fact that the synchronize operation is done on the same Object?

© Stack Overflow or respective owner

Related posts about java

Related posts about multithreading