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

本文探讨了并发编程中出现的问题,如可见性、原子性和有序性。详细解释了CPU缓存和Java内存模型(JMM)如何导致并发问题,以及Volatile关键字如何确保可见性和禁止指令重排。通过示例代码展示了Volatile如何解决并发可见性问题,同时也提到了在Kotlin中如何实现线程安全的单例模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇:
了解JVM中的GC

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

产生并发问题的原因

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

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

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

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

并发中的可见性问题

我们先来看一段代码:

class JMMDemo {
   
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XeonYu

码字不易,鼓励随意。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值