现在的位置: 首页 > 综合 > 正文

Java是怎么保证原子性,可见性

2019年05月22日 ⁄ 综合 ⁄ 共 314字 ⁄ 字号 评论关闭

先来谈谈可见性:

(1)volatile 变量:实际的作用:告诉jvm,这个变量的值不能取cpu的cache中的,应为那个值可能已经过时了,从这个层面来讲,volatile已经实现了可见性,但是他并没有实现原子性,原子性说白了就是一堆代码要一起执行完,比如说x++,这个在jvm层面上是要几条语句。。。。

(2)锁:jvm自己实现了一套内存一致性协议,对于变量的读写是由顺序控制的,read,load,store的变量是一定会写入主存的,已经由jvm的内存一致性协议完成了数据的读取写入问题

再来谈谈原子性:

volatile:不能完全实现可见性,如果你的当前值以来与之前的值

锁:一定能实现原子性----》在多线程情况下是程序会被串行执行

抱歉!评论已关闭.