Merge pull request #8 from annemsujan/master
Thread safe lazy loaded singleton implementation added.
This commit is contained in:
commit
70fffc5ca3
@ -1,10 +1,10 @@
|
||||
package com.iluwatar;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* Singleton pattern ensures that the class (IvoryTower) can have only one
|
||||
* existing instance and provides global access to that instance.
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class App {
|
||||
|
||||
@ -15,5 +15,12 @@ public class App {
|
||||
System.out.println("ivoryTower1=" + ivoryTower1);
|
||||
System.out.println("ivoryTower2=" + ivoryTower2);
|
||||
|
||||
ThreadSafeLazyLoadedIvoryTower threadSafeIvoryTower1 = ThreadSafeLazyLoadedIvoryTower
|
||||
.getInstance();
|
||||
ThreadSafeLazyLoadedIvoryTower threadSafeIvoryTower2 = ThreadSafeLazyLoadedIvoryTower
|
||||
.getInstance();
|
||||
System.out.println("threadSafeIvoryTower1=" + threadSafeIvoryTower1);
|
||||
System.out.println("threadSafeIvoryTower2=" + threadSafeIvoryTower2);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user