了解并发内存模型(JMM)和 Volatile

Posted XeonYu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解并发内存模型(JMM)和 Volatile相关的知识,希望对你有一定的参考价值。

上一篇:
了解JVM中的GC

我们都知道,多个线程同时操作一个数据会有并发问题,那为什么会出现并发问题呢,产生并发问题的原因是什么呢?

产生并发问题的原因

一般产生并发问题无外乎都跟以下三种特性相关

  1. 原子性
  2. 可见性
  3. 有序性

原子性:
比较好理解,多个线程在执行同一个任务时,其中一个线程在执行的中途不能切到其他线程再去执行该方法,不然就会出现数据不正确的问题。比如很经典的多线程下的卖票问题。这种问题我们可以通过加锁实现数据同步来解决。

下面我们来看看可见性问题

并发中的可见性问题

我们先来看一段代码:

class JMMDemo 
   
    private boolean flag = true;

    

以上是关于了解并发内存模型(JMM)和 Volatile的主要内容,如果未能解决你的问题,请参考以下文章

了解并发内存模型(JMM)和 Volatile

Java并发编程-JMM内存模型与volatile关键字

二:并发编程之JMM&synchronized&volatile详解

并发编程-Java内存模型和volatile

JUC多线程:JMM内存模型与volatile内存语义

全面理解Java内存模型(JMM)及volatile关键字(转)