一、单例模式一般对于某些对象只需要一个对象存在;
二、
1、懒汉模式
public class Single { private static Single instance = new Single(); private Single(){} public static Single getInstance() { return instance; } }
2、饿汉模式(使用的时候在加载对象,优于懒汉模式)
DCL模式:采用volatile为了避免高并发+指令集乱序导致的问题。想了解,可以看看jvm原理;
/** * DCL单例模式 */ public class DCLSingle { private volatile static DCLSingle instance; private DCLSingle() { } public static DCLSingle getInstance() { if (instance == null) { synchronized (DCLSingle.class) { if (instance == null) { instance = new DCLSingle(); } } } return instance; }
/** * 内部类实现单例模式 */ public class InnerClassSingle { private InnerClassSingle(){} private static class SingleHolder{ private static final InnerClassSingle instance = new InnerClassSingle(); } public static InnerClassSingle getInstance(){ return SingleHolder.instance; } }