深入理解jvm十一 java内存模型

java内存模型与线程

java内存模型

主内存
工作内存

关于主内存和工作内存之间具体的交互协议。java内存模型中定义了以下8中操作来完成,虚拟机实现时必须保证下面提到的每一种操作都是原子的,不可分割的。

  • lock 作用于主内存
  • unlock 作用于主内存
  • read 作用于主内存
  • load 作用于工作内存
  • use 作用于工作内存:他把工作内存中的一个变量的值传递给执行引擎
  • assign 作用于工作内存 他把一个从执行引擎接收到的值赋值给工作内存的变量,每当虚拟机遇到一个给变量赋值的字节码执行时执行这个操作。
  • store 作用于工作内存 他把工作内存中一个变量的值传递到主内存中。
  • write 作用于主内存的变量,他把store操作从工作内存中获得的变量的值放入主内存的变量中,

先行发生原则

先行发生时java内存模型中定义的两项操作之间的偏序关系,如果说操作a先行发生于操作比,其实就是说在发生操作b之前,操作a产生的影响能被操作b观察到,影响包括修改了内存中共享变量的值,发送了消息,调用了方法等。

线程安全:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境更下的调度和交替执行,也不用进行额外的同步,或者在戴永芳进行任何其他的协同操作,调用这个对象的行为都可以获得正确的结果,那这个对象时线程安全的。

按照线程安全的安全程度,我们将java语言中各种操作共享的数据分为 以下5类:

不可变;绝对线程安全;相对线程安全;线程兼容;线程对立

锁优化:

  1. 自旋锁和自适应自旋
  2. 锁消除
  3. 锁粗化
  4. 轻量级锁
  5. 偏向锁
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值