美文网首页
05章 - 安全发布对象

05章 - 安全发布对象

作者: 菜鸟程序员一枚 | 来源:发表于2019-01-28 18:17 被阅读0次

1. 在静态初始化函数中初始化一个对象引用

2. 将对象的引用保存到volatile类型域或者AtomicReference对象中

3. 将对象的引用保存到某个正确构造对象的final类型域中

4. 讲对象的引用保存到一个由锁保护的域中

1. 单例模式

/**
* 懒汉模式 -》 双重同步锁单例模式
* 单例实例在第一次使用时进行创建
*/
@ThreadSafe
public class SingletonExample5 {

   // 私有构造函数
   private SingletonExample5() {

   }

   // 1、memory = allocate() 分配对象的内存空间
   // 2、ctorInstance() 初始化对象
   // 3、instance = memory 设置instance指向刚分配的内存

   // 单例对象 volatile + 双重检测机制 -> 禁止指令重排
   private volatile static SingletonExample5 instance = null;

   // 静态的工厂方法
   public static SingletonExample5 getInstance() {
       if (instance == null) { // 双重检测机制        // B
           synchronized (SingletonExample5.class) { // 同步锁
               if (instance == null) {
                   instance = new SingletonExample5(); // A - 3
               }
           }
       }
       return instance;
   }
}

相关文章

  • 安全发布对象

    发布对象 发布对象:使一个对象能够被当前范围之外的代码所使用 对象逸出:一种错误的发布。当一个对象还没有构造完成时...

  • 安全发布对象

    发布对象:使一个对象能够被当前范围之外的代码所使用 对象溢出: 一个错误的发布。当一个对象还没有构造完成时,就使它...

  • 安全发布对象

    发布对象 定义:使一个对象能够被当前范围之外的代码所使用。 此处UnsafePublish中使用public域来发...

  • 安全发布对象

    什么是发布对象 使一个对象能够被当前范围之外的代码所使用 什么是对象逸出 一种错误的发布。当一个对象还没有构造完成...

  • 安全发布对象(一)

    发布对象: 使一个对象能够被当前范围之外的代码所使用 对象逸出: 一种错误的发布。当一个对象还没有构造完成时,就使...

  • 安全发布对象(二)

    在静态初始化函数中初始化一个对象引用 将对象的引用保存到volatile类型域或者AtomicReference对...

  • 7 安全发布对象

    1️⃣发布与逸出 ① 概念 发布对象 : 使一个对象能够被当前范围之外的代码所使用;对象逸出 : 一种错误的发布,...

  • 三、安全发布对象

    1、 基础概念理解 有些时候,我们希望在多个线程间共享对象,此时必须确保安全地进行共享,那么就牵扯到对象的发布问题...

  • 如何安全发布对象

    发布对象与逸出 发布对象: 使一个对象能够被当前范围之外的代码所使用,例如通过方法返回对象的引用,或者通过公有的静...

  • [并发] 5 安全发布对象

    1.不安全的发布对象 1.1 这里的UnsafePublish是不安全的发布对象,因为外界可以访问到states,...

网友评论

      本文标题:05章 - 安全发布对象

      本文链接:https://www.haomeiwen.com/subject/uwnajqtx.html