Thread-safe Singleton class

New Singleton class name has renamed to ThreadSafeLazyLoadedIvoryTower
and called it from App.java
This commit is contained in:
Sujan Reddy Annem 2014-10-13 22:15:45 -07:00
parent cffe592c9c
commit 5687976a91
3 changed files with 32 additions and 20 deletions

View File

@ -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);
}
}

View File

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

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;
}
}