Merge pull request #8 from annemsujan/master

Thread safe lazy loaded singleton implementation added.
This commit is contained in:
Ilkka Seppälä
2014-10-14 11:23:46 +03:00
2 changed files with 32 additions and 2 deletions

View File

@ -1,10 +1,10 @@
package com.iluwatar; package com.iluwatar;
/** /**
* *
* Singleton pattern ensures that the class (IvoryTower) can have only one * Singleton pattern ensures that the class (IvoryTower) can have only one
* existing instance and provides global access to that instance. * existing instance and provides global access to that instance.
* *
*/ */
public class App { public class App {
@ -15,5 +15,12 @@ public class App {
System.out.println("ivoryTower1=" + ivoryTower1); System.out.println("ivoryTower1=" + ivoryTower1);
System.out.println("ivoryTower2=" + ivoryTower2); System.out.println("ivoryTower2=" + ivoryTower2);
ThreadSafeLazyLoadedIvoryTower threadSafeIvoryTower1 = ThreadSafeLazyLoadedIvoryTower
.getInstance();
ThreadSafeLazyLoadedIvoryTower threadSafeIvoryTower2 = ThreadSafeLazyLoadedIvoryTower
.getInstance();
System.out.println("threadSafeIvoryTower1=" + threadSafeIvoryTower1);
System.out.println("threadSafeIvoryTower2=" + threadSafeIvoryTower2);
} }
} }

View File

@ -0,0 +1,23 @@
package com.iluwatar;
/**
*
* Thread-safe Singleton class.
*
*/
public class ThreadSafeLazyLoadedIvoryTower {
private static ThreadSafeLazyLoadedIvoryTower instance = null;
public synchronized static ThreadSafeLazyLoadedIvoryTower getInstance() {
/*
* The instance gets created only when it is called for first time.
* Lazy-loading
*/
if (instance == null) {
instance = new ThreadSafeLazyLoadedIvoryTower();
}
return instance;
}
}