I am getting confused which one should I use to make a synchronized singleton class object. I know below 2 ways of achieving it.
static volatile PaymentSettings paymentSettings = null;
public static PaymentSettings getInstance() {
if (paymentSettings == null) {
synchronized (PaymentSettings.class) {
if (paymentSettings == null)
paymentSettings = new PaymentSettings();
}
}
return paymentSettings;
}
And
private static class PaymentSettingsInstanceHolder {
private static PaymentSettings instance = new PaymentSettings();
}
public static PaymentSettings getInstance() {
return PaymentSettingsInstanceHolder.instance;
}
Please suggest which approach should I use and why?