单例模式
饿汉式
特点:直接创建静态对象
/** * 饿汉,直接new对象 */ class SingleEHan{ private static final SingleEHan s = new SingleEHan(); private SingleEHan(){ } public static SingleEHan getInstance(){ return s; } }
懒汉式
特点:延迟加载,可能存在线程安全问题
措施:使用同步,为提高判断锁状态的效率,可以使用双重判断
/** * 懒汉式双重判断单例模式 * 特点:延迟加载 */ public class Single { private static Single s = null; private Single() { } public static Single getInstance() { if (s == null) { synchronized (Single.class) { if (s == null) { return s = new Single(); } } } return s; } }