TA贡献1804条经验 获得超3个赞
volatile保证了数据的可见性,但是不保证原子性,volatile本来就不是用来处理并发情况下的,只能用在根据它修饰的变量进行判断处理,但是不能让它本身进行处理
volatile的非原子性:线程工作内容中的值从主内存中直接加载,一旦加载完成,就不会再产生对应的变化。JVM保证的是从主内存中加载到线程工作内存中的值是最新的,但是无法保证原子性。 volatile解决的是变量读时的可见性问题,无法保证原子性
TA贡献1839条经验 获得超15个赞
你看看字节码文件就明白啦,++i,是两条指令
举报