java 多线程 volatile bug?

https://img4.mukewang.com/5b4aef740001a93407750500.jpg

https://img2.mukewang.com/5b4aef890001f7d707870734.jpg

一只斗牛犬
浏览 536回答 3
3回答

狐的传说

volatile保证了数据的可见性,但是不保证原子性,volatile本来就不是用来处理并发情况下的,只能用在根据它修饰的变量进行判断处理,但是不能让它本身进行处理volatile的非原子性:线程工作内容中的值从主内存中直接加载,一旦加载完成,就不会再产生对应的变化。JVM保证的是从主内存中加载到线程工作内存中的值是最新的,但是无法保证原子性。 volatile解决的是变量读时的可见性问题,无法保证原子性

紫衣仙女

你看看字节码文件就明白啦,++i,是两条指令
打开App,查看更多内容
随时随地看视频慕课网APP