JMM和volatile

JMM和volatile

volatile: java内置关键字,轻量级的同步机制 (锁机制的削弱版)

volatile特性:

  1. 保证可见性
  2. 保证原子性
  3. 禁止指令重排

可见性:一种通知机制

JMM: Java内存模型

JMM是虚拟的不存在的东西(概念,约定)

约定:

  • 线程加锁前,必须读取,内存中最新的,变量值
  • 线程解锁前,必须将自己对变量的修改,同步到内存
  • 加锁,解锁是同一把锁

java对主内存的操作*

执行引擎<–操作use–线程工作内存<–加载load–拷贝变量<–读取read–主内存

执行引擎–反馈assign–>线程工作内存–储存store–>主内存–写入write–>主内存

​ 线程操作时需要加锁lock,执行结束后需要解锁unlock

volatile保证可见性

由于线程操作时,使用的都是内存变量的副本
所以当一个线程对变量进行更改后,其他线程不能及时得到更改后的值,将会导致一些可见性问题

volatile不保证原子性

java原子性: 只线程,事务不可分割,具有原子性的量,同一时刻只能有一个线程来对它进行操作

volatile禁止指令重排

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值