美文网首页JAVA并发编程笔记
并发编程之--volatile

并发编程之--volatile

作者: 404_null_nil | 来源:发表于2017-08-31 23:24 被阅读0次

1.volatile 原理

1.1 volatile是轻量级的synchronied,因为它不会引起上下午切换和调度,所以它的使用成本相对更低。

1.2缓存一致性:当对某个volatile修饰的变量进行写操作时,将数据写入内存,同时通知所有cpu的缓存行数据失效,当其他cpu读该缓存行数据时,发现数据失效,则从内存中读取,保持数据一致性,盗用网上一张图,如下:

1.3 volatile作用

1.3.1 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的;禁止进行指令重排序

1.3.2 可见性只能保证每次读取的是最新的值,但是volatile没办法保证对变量的操作的原子性

1.3.3 volatile关键字能禁止指令重排序,所以volatile能在一定程度上保证有序性
1.3.4 synchronized关键字是防止多个线程同时执行一段代码,那么就会很影响程序执行效率,而volatile关键字在某些情况下性能要优于synchronized,但是要注意volatile关键字是无法替代synchronized关键字的,因为volatile关键字无法保证操作的原子性

相关文章

网友评论

    本文标题:并发编程之--volatile

    本文链接:https://www.haomeiwen.com/subject/lrocjxtx.html