volatile关键字 博客分类: Java-并发
程序员文章站
2024-02-14 20:45:22
...
轻量级的synchronized,保证了共享变量的变化对其他线程可见。
适用对象:
存在于堆上的共享变量
适用场景:
多线程环境,特别是只有一个写线程多个读线程
实现原理:
线程在读取共享变量时,会首先读取该变量的副本存放于自己的本地栈中,并在自己的本地栈中进行修改(对于更新操作),之后,在某个时候再将这个更新的值刷新回主存(具体的某个时候,有JVM自己决定)。因此,如果多个线程要读取这个修改的值,更新不会立即刷新回主存,可能不同线程读到的值就不一样。声明为volatile的变量保证了线程更新该值之后,立即刷新回缓存,并且存在该共享变量的一个状态标识来表示该值是否已经失效,因此,如果该标志位标识值被更新,就强制其他读线程从主存读取更新的值。
上一篇: 采用数据模型和数据库同步技术
推荐阅读
-
volatile关键字 博客分类: Java-并发
-
-Java-注解 博客分类: java java
-
深入理解Java内存模型(二)——重排序 博客分类: java并发
-
生产者-消费者(java并发) 博客分类: java并发 javathread
-
java并发实践1 博客分类: java并发 javaconcurrency
-
线程同步之wait() 博客分类: java并发 javathread
-
深入理解Java内存模型(二)——重排序 博客分类: java并发
-
线程同步之wait() 博客分类: java并发 javathread
-
java并发实践1 博客分类: java并发 javaconcurrency
-
Java并发实战-私有构造函数捕获 博客分类: JAVA Java构造函数捕获