volatile
2015-11-20 20:29
211 查看
为了保证速度,处理器和内存不直接通信,而是通过将系统内存的数据读到缓存l1,l2等,然后再进行读写,如果变量是volatile的,那么在生成汇编代码时候会多产生一句lock开头的指令,x86处理器对lock开头的汇编是这样处理的,将缓存内直接写入内存,其它处理器的缓存了本变量都会失效,下次重新在内存读取。注意缓存读取是64个字节一起读取,所以有追加字节一说
代码(编译器)-字节码(jvm)-汇编指令,
volatile是轻量级的synchronized,不会引起上下文切换
代码(编译器)-字节码(jvm)-汇编指令,
volatile是轻量级的synchronized,不会引起上下文切换
相关文章推荐
- libc中的hook机制
- Eclipse错误集(一)
- 使用javaassist在内存中动态生成类
- BC #62 div1 02
- 【LeetCode OJ 009】Palindrome Number
- 《增长黑客:创业公司的用户与收入增长秘籍》----你的技术真的可以赚钱
- SQL基础--> 约束(CONSTRAINT)
- LinkedList
- hdu4245A Famous Music Composer(水题)
- LightOJ 1031 Easy Game(区间DP)
- 模仿银行简单的存取业务项目分析
- 以yyyyMMddHHmmss这种格式取得系统时间
- 关于c的4种算法以及实例演示
- nginx负载均衡的5策略
- JQuery判断radio是否选中并获取选中值的示例代码
- Python调用MongoDB使用心得
- 《掌握需求过程》阅读笔记二
- 黑苹果安装后不能调节分辨率
- Oracle 删除表中记录 如何释放表及表空间大小
- python调用Mongodb笔记