设计模式--单例模式--懒汉式

2 懒汉式

优点 懒加载 线程安全

缺点 效率不高 类中存在开辟内存空间代码时会造成资源浪费

public class SingletonDemo2 {
     
    //优缺点
//    优  线程安全  可以延迟加载 

    //    缺点  效率不高
//    当代码中存在已下变量但是在运行中未使用时有资源浪费
    private static Byte[] bytes = new Byte[1024];
    //    私有化构造器
    private SingletonDemo2() {
     }
    //    创建但不初始化
    private static SingletonDemo2 INSTANCE;

    public static synchronized SingletonDemo2 getInstance() {
     
        if (INSTANCE == null) {
     
            INSTANCE = new SingletonDemo2();
        }
        return INSTANCE;
    }
}

假设 线程一 访问到了getInstance()方法 这时候因为synchronized别的线程将不能访问这个函数

所以 线程一 开始执行if判断 如果INSTANCE为空 则表示这个线程是第一个进入这个方法的 这时候给线程new一个实例返回出去

如果 线程一 不是第一个进入的 那么在if判断的时候就会 认为INSTANCE不为空 则返回已有的实例

测试

class test2 {
     
    public static void main(String[] args) {
     
        SingletonDemo2 sinleton = SingletonDemo2.getInstance();
        SingletonDemo2 sinleton2 = SingletonDemo2.getInstance();
        System.out.println(sinleton == sinleton2);
    }
}

结果

true  //两个实例相同

你可能感兴趣的:(设计模式,设计模式,java)