这里借用hutool的部分源码
2.1.单例模式
public class ConverterRegistry implements Serializable {
private static final long serialVersionUID = 1L;
private volatile Map> customConverterMap;
private static class SingletonHolder {
private static final ConverterRegistry INSTANCE = new ConverterRegistry();
}
public static ConverterRegistry getInstance() {
return SingletonHolder.INSTANCE;
}
}
2.2.双重检查
public abstract class LazyLoaderimplements Loader , Serializable { private static final long serialVersionUID = 1L; private volatile T object; @Override public T get() { T result = object; if (result == null) { synchronized (this) { result = object; if (result == null) { object = result = init(); } } } return result; } protected abstract T init(); }



