懒汉式(线程安全)

有缺点说明

  1. 解决了线程不安全问题

  2. 效率太低了,每个线程在想获得类的实例时候,执行getInstance()方法都要进行同步.而其实这个方法只执行了一次实例化代码就够了,后面的想获取该类实例,直接return就行了.方法进行同步效率太低

  3. 结论: 在实际开发中,不推荐使用这种方式

代码演示

package com.atguigu.principle.singleton.type04;

/**
 * @author victor
 * @site https://victorfengming.github.io/
 * @company XDL
 * @project java_mode
 * @package com.atguigu.principle.singleton.type04
 * @created 2021-02-02 19:29
 * @function ""
 */
public class Singleton04 {

public static void main(String[] args) {
        Singleton ins = Singleton.getInstance();
        Singleton ins2 = Singleton.getInstance();
        System.out.println(ins);
        System.out.println(ins.hashCode());
        System.out.println(ins2);
        System.out.println(ins2.hashCode());
        System.out.println(ins == ins2);
    }

}

// 懒汉式 (线程安全_ 同步放法_)
class Singleton{
    private static Singleton instance;

    private Singleton() {

    }

    // 提供一个静态的公有方法 加入了同步处理的代码
    // 解决线程安全问题
    // 即懒汉式
    // 我们在这里加一个关键字 synchronized
    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}


results matching ""

    No results matching ""