java之volatile
来源:互联网 发布:网页美工招聘哈尔滨 编辑:程序博客网 时间:2024/06/05 05:14
volatile
能保证程序的可见性:多个线程之间共享变量,如果变量改变,对其他线程同时可见
原理和实现机制:
观察加入volatile关键字和没有加入volatile关键字时所生成的汇编代码发现,加入volatile关键字时,会多出一个lock前缀指令,lock前缀指令实际上相当于一个内存屏障(也成内存栅栏),内存屏障会提供3个功能:
1)它确保指令重排序时不会把其后面的指令排到内存屏障之前的位置,也不会把前面的指令排到内存屏障的后面;即在执行到内存屏障这句指令时,在它前面的操作已经全部完成;
2)它会强制将对缓存的修改操作立即写入主存;
3)如果是写操作,它会导致其他CPU中对应的缓存行无效。
能保证程序的可见性:多个线程之间共享变量,如果变量改变,对其他线程同时可见
原理和实现机制:
观察加入volatile关键字和没有加入volatile关键字时所生成的汇编代码发现,加入volatile关键字时,会多出一个lock前缀指令,lock前缀指令实际上相当于一个内存屏障(也成内存栅栏),内存屏障会提供3个功能:
1)它确保指令重排序时不会把其后面的指令排到内存屏障之前的位置,也不会把前面的指令排到内存屏障的后面;即在执行到内存屏障这句指令时,在它前面的操作已经全部完成;
2)它会强制将对缓存的修改操作立即写入主存;
3)如果是写操作,它会导致其他CPU中对应的缓存行无效。
阅读全文
0 0
- java之volatile解析
- Java 之volatile
- Java 之 volatile 解析
- Java之volatile
- java之Volatile使用
- Java并发之volatile
- java并发之volatile
- Java之Volatile关键字
- java并发之volatile
- JAVA关键字之volatile
- Java 之 volatile关键字
- java之volatile
- java之volatile关键字
- java之volatile
- java之volatile
- java多线程之volatile
- Java-理论知识之关键字Volatile
- java volatile应用之 AtomicInteger
- 第五周【项目1
- Python编码错误SyntaxError: Non-ASCII character '\xe5'
- 慕尔如星,愿首一人心
- 产品经理在工作中如何进行沟通
- 基于js的无缝轮播图( 移动端手指滑动操作)(扩展:简单的倒计时)
- java之volatile
- bzoj1009 [HNOI2008]GT考试(AC+矩乘优化dp)
- Maven本地仓库/远程仓库的基本介绍
- 动态旋转
- 百度推送SDK之接入指南(一)
- IDEA 出现错误:找不到或无法加载主类
- Fourth and fifth week of machine learning on Coursera
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
- 说说成为顶级运营人员的一个先决条件:做事的霸气!