zoukankan      html  css  js  c++  java
  • volatile关键字

    volatile关键字有两个特性:

    1. volatile变量对所有线程的可见性,指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。
    2. volatile变量可以禁止指令重排序优化。

    因为JVM要求线程每次使用工作内存中的volatile变量时,都必须从主内存中刷新获取最新的值;执行线程每次修改工作内存中的volatile变量后也必须立刻将之同步回主内存,这样一个线程修改了volatile变量的值,其他线程可以立即得知。

    CPU需要能正确处理指令依赖情况以保障程序能得出正确的执行结果。因为修改volatile变量的值之后需要将之立即同步到主内存,这样就无形中使对修改volatile变量之前的操作依赖于修改后同步到内存的操作,这种依赖关系是CPU在指令重排时也无法忽视的,从而在某种程度上禁止了指令重排序。

    ######

  • 相关阅读:
    MySQL数据模型
    Spring循环依赖
    @Autowired和@Resource区别
    Kafka概念
    阻塞队列
    线程池原理
    Spring AOP
    JVM 史上最最最完整深入解析(12000 字噢)
    Dubbo配置信息
    友情链接
  • 原文地址:https://www.cnblogs.com/amunote/p/10301596.html
Copyright © 2011-2022 走看看