美文网首页
线程安全性(三)

线程安全性(三)

作者: 墨平语凡 | 来源:发表于2018-06-02 09:42 被阅读0次

可见性

不可见的原因.jpg synchronized.png image.png

volatile变量在每次被线程访问时都强迫从主内中读取该变量的值,而该变量发生变化时都会强迫线程将该变量的值刷新到主内存中,这样,任何时候所有线程都能看到该变量的最新值

volatile写.png volatile读.png
 /**
     *  当两个线程同时执行了第一步, 就都读到了count的值, 比如是5
     *  两个线程同时执行了+1操作并写回主存,这样就丢了一次+1的操作,结果是6问不是5
     */
    public static void add(){
        // 1. 去读内存中的count值
        // 2. +1
        // 3. count写回主存
        count++;
    }

volatile 不具有原子性

使用volatile需要具备两个条件:

  1. 对变量的写操作不依赖于当前值
  2. 该变量没有包含在具有其他变量的不变的式子中,因此volatile特别适合作为状态标记量。
    boolean.png

相关文章

  • 线程安全性(三)

    可见性 volatile变量在每次被线程访问时都强迫从主内中读取该变量的值,而该变量发生变化时都会强迫线程将该变量...

  • EffectiveJava第十章第五节

    线程安全性的文档化 并非出现synchronized关键字就是线程安全性文档化了。实际上,一个类支持的线程安全性有...

  • String的线程安全

    线程安全性 说道有关string的线程安全性,大家想到的肯定时stringbuffer和stringbuilder...

  • Java并发编程 线程安全性

    什么是线程安全性 线程安全性:当多个线程访问某个类时,不管运行时采用何种调度方式或者这些线程将被如何交替执行,并且...

  • java并发编程实战2~3

    2 线程安全性 2.1 什么是线程安全性 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何...

  • 谈谈并发编程中的线程安全性

    1. 线程安全性 在单线程程序中,我们并不需要去考虑线程的安全性。但是在多线程程序中,由于多个线程要共享相同的内存...

  • 线程安全性(一)

    参考线程安全性总结 CountDownLatchCountDownLatch 可以阻塞线程并保证线程在满足某种特定...

  • HashMap和Hashtable的区别

    HashMap个Hashtable的区别主要体现在三个方面:线程安全性,同步,速度 HashMap是非同步的,线程...

  • 高并发编程03 ~ 线程安全性

    这节我们讨论一个话题:线程安全性 一、概念 线程安全性:当多个线程同时访问某个资源的时候,不管环境采用何种调度方式...

  • 线程安全性详解

    线程安全性 线程安全性定义: 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并...

网友评论

      本文标题:线程安全性(三)

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