| 1600 PMP mock questions | 1400 CAPM mock questions | 800 SCJP 6 mock questions | 600 OCAJP 7 mock questions | 590 OCPJP 7 mock questions | 556 SCWCD 5 mock questions | 500 OCEJWCD 6 mock questions | pdfDownload (java,struts, hibernet etc) | JobsJobs and Walkins |
OOPs and Design Pattern interview questions
|
!!! OOPs and Design Pattern interview questions !!!What is Singleton ? and Double-checked locking ?Need to follow : * private constructor , can't create object from outside of the class * Synchronized methods are used to ensure that the class is thread-safe. * This class cannot be subclassed because the constructor is private. This may or may not be a good thing depending on the resource being protected. //Single-checked locking //Thread 1 enters the synchronized block, and, before it can assign the singleton member variable, the thread is preempted. Subsequently, another thread can enter the if block. The second thread will wait for the first thread to finish, but we will still wind up with two distinct singleton instances public static Sequence getInstance() { if(singleton == null) { synchronized(Sequence.class) { singleton = new Sequence(); } } return singleton; } //final and best solution is public class Sequence { private static Sequence singleton; private Sequence() { } //Double-checked locking //Imagine Thread 1 enters the synchronized block and is preempted.Subsequently, a second thread enters the if block.When Thread 1 exits the synchronized block, Thread 2 makes a second check to see if the singleton instance is still null.Since Thread 1 set the singleton member variable, Thread 2's second check will fail, and a second singleton will not be created. public static Sequence getInstance() { if(singleton == null) { synchronized(Sequence.class) { if(singleton == null) { singleton = new Sequence(); } } } return singleton; } } |
Suggested JobsMore Jobs >> |