Singleton Pattern
- Singleton Pattern says that just "define a class that has only one instance and provides a global point of access to it".
- The above image depicts the UML of Singleton design pattern
UML - Unified Modeling Language
Popular for diagrammatic notation.
For Visualization, to understand & remember.
In UML, first block is considered as the class, second block is considered as Attributes & third block is considered as Methods
Signs used such as +, -, # have certain meaning. They will tell which Access modifier is being used.
(+) - Public
(-) - Private
(#) - Protected
Steps to create Singleton design pattern
Through constructor the client can create many objects of a class
So make the constructor as private.
Now, how do we get the instance of the class
Create getInstance method which checks if instance is null or not. If instance is not null, return the same instance or call the constructor to create new instance.
Now how the client can call this method? because methods are called by objects
Client doesn't have object, so no access to constructor. Use static keyword. We do not need instance of the class if we use static.
What is Multithreading and how to handle Multiple threads
In main method, do mistake purposefully in System.out.println we will see error exception in thread main which means main is a thread & by running it we are getting the error.
Normally code runs line by line but if we want 2 things to run simultaneously, then it will be multithreading.
Do Ctrl + Shift + Escape, you will get Task manager go to performance tab in that We can view how many cores are there & in each core 2 threads can be run. So Logical processors = 2 * Cores.
At a time only (Logical processors = 2 * Cores) threads can be run.
In Task manager We will see thousands of threads working at a time. But the (Logical processors = 2 * Cores) threads will take turns & switch within microseconds. That is why we see thousand of threads in numbers.
Why we are handling Mutiple threads in Singleton design pattern
If 2 threads access the getInstance method, both threads will check if instance is null or not. To both of them instance will be null and each thread will create one obecjt.
But our objective in Singleton design pattern is to create one object and use it for all instances. So to avoid this we will use synchronized key word.
To handle multiple threads we will be using synchronized key word. What it does is it will lock the operation until one thread operation is completed. So that multiple threads can not use a method at a time.
- In above image we can view we made the getInstance method synchronized so that multiple threads can not access it at the same time
Cons of Singleton design pattern
-
Should be handled carefully in Multithreaded environment
Happy Reading
Top comments (0)