并发编程之--volatile

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关键字无法保证操作的原子性

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容