11-volatile:synchronized的轻量级实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38331606/article/details/84620278
  1. volatile:synchronized的轻量级实现
    1. 作用:保证数据的可见性,以及确保变量不会被重排序

volatile关键字修饰的成员变量,不存在工作线程的副本;每次直接都从主内存中读取。只能保证数据的可见性,但不保证操作的原子性。

    1. 使用案例
      1. 和Synchronized结合,用于对变量n读多写少的情况

告诉处理器, 不要将我放入工作内存, 请直接在主存操作我。

      1. 和CAS结合保证操作的原子性,如AtomicInteger

 

      1. 修饰线程之间的共享变量

如下图程序,运行时会一直卡在循环中。即子线程中修改主存后,但是main线程读取的是当前线程存储空间的值,导致循环不能停止。添加volatile修饰后,在子线程运行结束后,主线程会退出循环。

    1. 注意事项:本身不具备线程安全的特性

多线程学习大纲:https://mp.csdn.net/postedit/84768644

猜你喜欢

转载自blog.csdn.net/qq_38331606/article/details/84620278
今日推荐