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

来源:互联网 发布:免费最新看电影的软件 编辑:程序博客网 时间:2024/04/30 06:41

先来谈谈可见性:

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

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


再来谈谈原子性:

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

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



0 0
原创粉丝点击