What is the difference between these two approaches of creating singleton Class ?<br /> <br /> //Double Checked Locking Code<br /> public static Singleton createInstance() {<br />    if(singleton == null){<br />       synchronized(Singleton.class) { <br />          if(singleton == null) {<br />             singleton = new Singleton();<br />          }<br />       }<br />    }<br />    return singleton;<br /> }<br /> <br /> //Single checked locking code<br /> public static Singleton createInstance() {<br />    synchronized(Singleton.class) { <br />       if(singleton == null) {<br />          singleton = new Singleton();<br />       }<br />    }<br />    return singleton;<br /> }
Javasearch.buggybread.com

Search Interview Questions


 More than 3000 questions in repository.
 There are more than 900 unanswered questions.
Click here and help us by providing the answer.
 Have a video suggestion.
Click Correct / Improve and please let us know.
Label / Company      Label / Company / Text

   



Interview Questions and Answers

 Q1. What is the difference between these two approaches of creating singleton Class ?

//Double Checked Locking Code
public static Singleton createInstance() {
   if(singleton == null){
      synchronized(Singleton.class) {
         if(singleton == null) {
            singleton = new Singleton();
         }
      }
   }
   return singleton;
}

//Single checked locking code
public static Singleton createInstance() {
   synchronized(Singleton.class) {
      if(singleton == null) {
         singleton = new Singleton();
      }
   }
   return singleton;
}
Design
Ans. In First Case , Lock for the synchronized block will be received only if singleton == null whereas in second case every thread will acquire the lock before executing the code.
The problem of synchronization with singleton will only happen when the object has not be instantiated. Once instantiated , the check singleton == null will always generate true and the same object will be returned and hence no problem. First condition will make sure that synchronized access ( acquiring locks ) will only take place if the object has not been created so far.

 Help us improve. Please let us know the company, where you were asked this question :   

   Like         Discuss         Correct / Improve     java   singleton   synchronization

Try 1 Question(s) Test


Related Questions

 Difference between Static and Singleton Class ?
 What is the difference between Singleton and Prototype Bean scope in Spring ?
 serialization and deserialization of singleton class
 What are design situations to use Singleton and Prototype Design Pattern ?
 How to avoid cloning, serialization in the singleton class ?
 When singleton can break and how to resolve it
 If you are given choice to either load object eagerly or lazily , which one would you use in case of singleton pattern ?
  When should we use prototype scope and singleton scope for beans ?
  Explain Singleton Design Pattern ?



Help us and Others Improve. Please let us know the questions asked in any of your previous interview.

Any input from you will be highly appreciated and It will unlock the application for 10 more requests.

Company Name:
Questions Asked: