为了账号安全,请及时绑定邮箱和手机立即绑定

java 多线程 volatile bug?

java 多线程 volatile bug?

一只斗牛犬 2018-07-14 12:13:00
查看完整描述

3 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

volatile保证了数据的可见性,但是不保证原子性,volatile本来就不是用来处理并发情况下的,只能用在根据它修饰的变量进行判断处理,但是不能让它本身进行处理

volatile的非原子性:线程工作内容中的值从主内存中直接加载,一旦加载完成,就不会再产生对应的变化。JVM保证的是从主内存中加载到线程工作内存中的值是最新的,但是无法保证原子性。 volatile解决的是变量读时的可见性问题,无法保证原子性

查看完整回答
反对 回复 2018-07-15
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

你看看字节码文件就明白啦,++i,是两条指令

查看完整回答
反对 回复 2018-07-15
  • 3 回答
  • 0 关注
  • 515 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信