JMM,synchronized

CPU :二进制

解释执行器/JIT优化 -- 》汇编指令 硬件原语 --》 二进制

1) 堆 class 对象 new

2)

Lock 触发硬件缓存锁定机制(总线锁,系统总线 -- 总线桥 -- 内存总线)

缓存一致性协议 MESI (modified-engross独占-share-invaild)

缓存行锁定 --》原子

(64byte) 大于64字节时,放弃缓存一致性协议,换总线锁。

Synchronized:

Java 对象(class对象)大小:8字节的整数倍

1)对象头:mark word(32位),对象的hash code,元数据指针:class对象 --》 kclass对象,

2)数组长度(数字对象才有),

3)示例数据:

4)对齐填充位

Synchronized 互斥锁,应用 方法 同步块 加锁力度 原理 锁的优化膨胀 锁的状态在对象的markword里  基于逃逸分析 锁的消除  锁的粗化

1)锁的膨胀升级(不可逆)无锁 -- 偏向锁 -- 轻量级锁(自旋锁) --重量级锁

2)Jvm--锁的粗化:

Synchronized(obj){sout…1}

Synchronized(obj){sout…2}

Synchronized(obj){sout…3}

-->

Synchronized(obj){sout…123}

逃逸分析:

对整个代码扫描,同一个对象的锁上了又释放再上再释放,将同一个对象的多个锁放在一起。

3)Jvm-- 锁的消除

逃逸分析:

当加锁没有意义的时候,会去掉。

Java对象(标量的聚合量):8大基本数据类型(标量)

New Object() --> heap 堆 ,逃逸分析优化 --> 将标量直接放到线程栈里取用

AQS

抽象队列同步器

ReetrantLock:基于AQS 的互斥锁 实现了公平/非 可重入

区别:s---JVM内置锁 r--加锁手动

多线程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值