Merge pull request #8 from annemsujan/master
Thread safe lazy loaded singleton implementation added.
This commit is contained in:
		| @@ -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; | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user