volatile关键字

转载 https://blog.csdn.net/u012723673/article/details/80682208

特性:

  1. 保证可见性,不保证原子性
  2. 禁止指令重排
    • 重排序在单线程下一定能保证结果的正确性,但是在多线程环境下,可能发生重排序,影响结果
    • 即执行到volatile变量时,其前面的所有语句都执行完,后面所有语句都未执行。且前面语句的结果对volatile变量及其后面语句可见。

单例模式为什么要加volatile

  • 单例模式特别常见,比如在aop中,从beanFactroy中获取advice时
    AbstractBeanFactoryPointcutAdvisor#getAdvice、MethodSecurityMetadataSourceAdvisor#getAdvice
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容