Singleton in Java

Singleton is design core java design pattern which allows a single instance of an object per application. why do we need singleton?

  1. To read the properties and make available for entire application
  2. To share same information along diff threads or parts of an application
//simplest Singleton class
public class MySingletonClass {
    private static final MySingletonClass instance = new MySingletonClass();
    private MySingletonClass(){}
    public static MySingletonClass getInstance(){
        return instance;
    }
}
//improved singleton class
public class MySingletonClass {
    private static final MySingletonClass instance = null;
    private MySingletonClass(){}
    public static MySingletonClass getInstance(){
        if(instance == null){
               instance = new MySingletonClass ();
        }
        return instance;
    }
}
//improved thread-safe singleton class
public class MySingletonClass {
    private static final MySingletonClass instance = null;
    private MySingletonClass(){}
    public static synchronized MySingletonClass getInstance(){
        if(instance == null){
               instance = new MySingletonClass ();
        }
        return instance;
    }
}