美文网首页
volatile 引用

volatile 引用

作者: 不存在的里皮 | 来源:发表于2019-06-12 03:25 被阅读0次

参考

Java - Volatile reference object and its member fields visibility

正文

java引用只能保证引用本身的可见性,而不能保证其成员变量的可见性。
如果要做到这一点,需要用synchronized方法同时设置这些变量,并用synchronized方法返回这些变量的数组。
synchronized的底层还是基于操作系统的mutex lock,所以,我们还是要利用锁的机制,也就是说,用ReentrantLock去设置和获取两个变量也是可以的。

public synchronized void setValues(int a, int b) {
    this.a = a;
    try {
        TimeUnit.MICROSECONDS.sleep(1);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    this.b = b;
}

public synchronized int[] getValues() {
    return new int[]{a, b};
}

相关文章

  • volatile 引用

    参考 Java - Volatile reference object and its member fields...

  • volatile && ThreadLocal

    1、volatile 保证可见性,不保证原子性 2、ThreadLocal:结构: 3、引用概念: (1)强引用:...

  • 史上最全Java面试题!关于volatile关键字篇(带全部答案

    可以创建Volatile数组吗? Java 中可以创建 volatile类型数组,不过只是一个指向数组的引用,而不...

  • Android面试一问一答:单例

    手写一个线程安全的单例 volatile关键字有什么作用 volatile关键字保证了对mInstance这个引用...

  • 头条二面记录

    面试问题记录: 1.强引用 软引用 弱引用 虚引用 2.volatile 关键字作用 和实现原理 3.闭包 4.加...

  • 安全发布对象(二)

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

  • Java并发编程 - 发布对象 JUC笔记

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

  • 05章 - 安全发布对象

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

  • 并发--无锁(cas+volatile)

    本章内容: CAS 与 volatile 原子整数 原子引用 原子累加器 Unsafe 1、问题提出 扣款方法wi...

  • 第五章

    安全发布对象1.在静态初始化函数中初始化一个对象的引用2.将对象的引用保存到volatile类型域或者Atomic...

网友评论

      本文标题:volatile 引用

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