zoukankan      html  css  js  c++  java
  • synchronize 和volatile 实现共享变量在多线程中的可见性

    1、什么是线程可见性

    可见性:一个线程对共享变量值的修改能够及时被其他线程看到。

    共享变量:如果一个变量在多个线程工作内存中都存在副本,那么着给按量就是这几个线程的共享变量。

    2、导致共享变量在线程间不可见的原因

    1. 线程的交叉执行
    2. 重排序结合线程交叉执行
    3. 共享变量更新后的值没有在工作内存与主内存即时刷新

    3、synchronize实现可见性

    JMM关于synchronize的两条规定:

    1. 线程解锁前,必须把共享变量的最新值刷新到主内存中。
    2. 线程加锁时,将清空工作内存中的共享变量的值,从而使用共享变量时需要从主内存中重新读取最新的值(注意:加锁和解锁需要是同一把锁)

    4、volatile实现可见性

    synchronize和volatile的比较

  • 相关阅读:
    汉语-汉字:鬲
    汉语-汉字:鬻
    汉语-汉字:軎
    汉语-汉字:辔
    汉语-汉字:燮
    汉语-汉字:夔
    汉语-汉字:鬯、畅
    4-2电子时钟中的运算符重载
    华为OJ:计算字符个数
    POJ 3071 Football 【概率DP】
  • 原文地址:https://www.cnblogs.com/oskyhg/p/7067682.html
Copyright © 2011-2022 走看看