本文最后更新于49 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
Volatile关键字的作用:如果一个字段被声明成Volatile,Java内存模型(JMM)会确保所有线程看到这个变量的值是一样的。即保证可见性。
Volatile读-写的内存语义:
- 当写一个Volatile变量的时候,JMM会把该线程对应本地内存中的共享变量值刷新到主内存
- 当读一个Volatile变量时:JMM会把该线程对应的本地内存置为无效,现成接下来将从主内存中读取共享变量
Volatile有序性:
Volatile可以理解为对happen-before的volatile 变量规则的实现。
Volatile常用于多线程环境下的单次操作(单次读或者单次写)
Volatile不能保证原子性,对于多线程访问同一个实例变量需要加缩进行同步。