Toggle navigation
KUBERNETES
数据库
设计
java
springboot
JUC
php
swoole
swoole
服务器
首页
登录
csworkman
个人博客
volatile——介绍
2022-6-7
Mr Chang
JUC
特点:可见性,有序性
语义:
当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量立即刷新回主内存中。
当读一个volatile变量时,JMM会把该线程对应的本地内存设置为无效,重新回到主内存中读取最新共享变量。
内存屏障
由于volatile变量只能保证可见性,在不符合以下两条规则的运算场景中,我们仍然要通过加锁来保证原子性
运算结果并不依赖变量的当前值,或者能够确保只有单一的线程修改变量的值。
变量不需要与其他的状态变量共同参与不变约束。
禁止重新排序的三种情况(重排序发生,会导致程序运行结果不同。)
写后读————a=1; b=a; ————写一个变量之后在读这个变量
写后写————a=1; a=2;———— 写一个变量之后,在写这个变量
读后写————a=b;b=1;——————读一个变量之后,在写这个变量
«
CAS
|
happens-before之8条
»
取消回复
发表评论:
昵称
邮件地址 (选填)
个人主页 (选填)
存档
2023年11月(2)
2023年7月(1)
2023年2月(1)
2022年6月(14)
2022年5月(1)
2022年3月(13)
2022年1月(2)
2021年12月(1)
2021年11月(1)
2021年9月(14)
2021年8月(11)
2021年6月(1)
2021年5月(9)
2021年4月(11)
2020年11月(1)
链接
emlog.net
搜索
发表评论: