Hi Sumanta,
the idea of a singleton class is to make sure that there's exactly one single instance of this class at any time when you run the application.
One common scenario for example is to represent a global resource handle like database connections via a singleton object which is shared between all classes or objects which need this resource.
Unfortunately the singleton
pattern has become very infamous today because it has many drawbacks and it's easier to misuse the singleton pattern then to use it correctly. Often a singleton like the said database connection is just created to hide the fact that it is used like a global variable because the singleton can be accessed via a static method call which somewhat hides the fact that you have created an implicit dependency. Other things where singletons are (mostly) bad are testability or maintainability.
Things got even worse in a multithreaded environment like web or enterprise applications. It's almost impossible to get a singleton implementation right for concurrent access with multiple threads without a deep understanding of concurrency effects in the JVM.
In my experience singletons are misused most of the time. Besides there are other, much better ways to achieve the real goal of the singleton pattern, i.e. to create a single instance of a class. Dependency injection frameworks can do this for you for example. You shouldn't make yourself too familiar with the singleton pattern
Marco