多线程系列-volatile
来源:互联网 发布:mac炉石传说无法运行 编辑:程序博客网 时间:2024/05/16 19:44
java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作和其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。
volatile与加锁机制的区别:
加锁机制既可以确保可见性又可以确保原子性,而volatile变量只能确保可见性。
当且仅当满足以下所有条件时,才应该使用volatile变量:
1.对变量的写入操作不依赖变量的当前值,或者你能确保只有单个线程更新变量的值。
2.该变量不会与其他状态变量一起纳入不变性条件中。
3.在访问变量时不需要加锁。
0 0
- 多线程系列-volatile
- 【多线程系列】Volatile总结之同步问题
- JAVA多线程系列--关键字(volatile,synchronized)
- Java多线程干货系列— volatile关键字
- 多线程----volatile
- 多线程 - volatile
- 【java多线程系列】java中的volatile的内存语义
- Jakob Jenkov多线程系列一一Java Volatile Keyword
- Java多线程干货系列—(四)volatile关键字
- Java多线程干货系列—(四)volatile关键字
- 多线程之volatile
- Volatile与多线程
- 浅谈Volatile与多线程
- Volatile与多线程
- Win32多线程之volatile
- 【多线程】volatile用法
- 多线程volatile实现
- 多线程中的Volatile
- 学习安卓相关的网站
- Struts2 的jar包冲突如何解决?
- javascript中数组的sort()方法原理研究
- 二叉排序树
- BootStrap实战二之网站 Logo 添加
- 多线程系列-volatile
- MapReduce_SecondarySort示例
- 447. Number of Boomerangs
- Socket内涵
- Android序列化的存储和读取
- hibernate无法自动建表问题
- java之断言assert
- 位向量实现的bitset集合
- JSP 动作元素 标签