你应该知道的 volatile 关键字

当一个变量被 volatile 修饰时,任何线程对它的写操作都会立即刷新到主内存中,并且会强制让缓存了该变量的线程中的数据清空,必须从主内存重新读取最新数据。

volatile 修饰之后并不是让线程直接从主内存中获取数据,依然需要将变量拷贝到工作内存中。

但这里有个误区,这样的使用方式容易给人的感觉是:

对 volatile 修饰的变量进行并发操作是线程安全的。

这里要重点强调,volatile 并不能保证线程安全性!

内存可见性只是 volatile 的其中一个语义,它还可以防止 JVM 进行指令重排优化。

最新文章

  1. WEB前端工程师(实践)制作天气预报难度:简单
  2. Visual Studio 15 Preview 4安装
  3. mybatis 3.2.7 与 spring mvc 3.x、logback整合
  4. Delphi Format中的换行符号是什么
  5. 用 rsync 同步本地和服务器的文件
  6. 替换应用程序DLL动态库的详细方法步骤 (gts.dll为例)
  7. android动画基础之Animation
  8. Storm入门(六)深入理解可靠性机制
  9. python学习day15 模块(重点)
  10. Java开发笔记(二)Java工程的帝国区划
  11. C++第二章作业
  12. css3和html5
  13. 性能优化-YAHOO军规
  14. JDK1.7安装和配置及注意事项
  15. 【php增删改查实例】第二十三节 - PHP文件上传
  16. CSS实现垂直居中的5种思路
  17. 浅谈平衡树splay
  18. java绘图合并图像AlphaComposite模式测试
  19. Mac OSX 如何在命令行中生成 md5、sha1、sha256 校验和
  20. 在Eclipse中安装JSHint插件

热门文章

  1. Django 模板(Template)
  2. k8s 创建私有docker仓库 登陆授权令牌的Secret
  3. 所谓 ICMP,不过将军与士卒而已
  4. Qt获取一张图片的平均色(主色调)
  5. Docker怎么实现容器之间的通信?
  6. Android NDK工程的编译和链接以及使用gdb进行调试
  7. LA3905流星
  8. Windows认证体系解读
  9. Nginx配置动静分离
  10. CVPR2021| TimeSformer-视频理解的时空注意模型