您的位置:首页 > 编程语言 > Java开发

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

2014-10-13 13:13 417 查看
先来谈谈可见性:

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

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

再来谈谈原子性:

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

锁:一定能实现原子性----》在多线程情况下是程序会被串行执行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: