双重锁校验
private static volatile Single_case single_case; public static Single_case getInstance() { //第一层校验:无需没此都被synchronized限制 if (single_case == null) { synchronized (Single_case.class) { //第二层校验,可能前一个对象已经在实例化,但是还未完成 if (single_case == null) { single_case = new Single_case(); } } } return single_case; }
一开始常用的饿汉式(缺点:非懒加载)
public class Single_case { private static Single_case single_case = new Single_case(); public Single_case() { } public static Single_case getInstance() { return single_case; } }