Java并发杂谈(一):volatile的底层原理,从字节码到CPU

本文探讨了Java中volatile关键字的底层原理,包括它如何确保变量的可见性和禁止指令重排。通过分析代码、字节码、JVM源码、汇编以及CPU层面,揭示了volatile在不同层次上实现并发安全的机制。
摘要由CSDN通过智能技术生成

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

volatile的特性

volatile是Java中用于修饰变量的关键字,其主要是保证了该变量的可见性以及顺序性,但是没有保证原子性;其是Java中最为轻量级的同步关键字;
接下来我将会一步步来分析volatile关键字是如何在Java代码层面、字节码层面、JVM源码层次、汇编层面、操作系统层面、CPU层面来保证可见性和顺序性的;

Java代码层面

当一个变量被定义为volatile之后,具备两项特性:

  1. 保证此变量对所有线程的可见性
  2. 禁止指令重排序优化

volatile所保证的可见性

volatile所修饰的变量在一条线程修改一个变量的值的时候,新值对于其他线程来说是可以立即知道的;
普通变量的值在线程间传递的时候都是通过主内存去完成;

根据JMM我们可以知道,每一个线程其实都有它单独的栈空间&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值