Synchronized(JVM内置锁)

问题:1、jdk为什么设计Synchronized?因为在多线程中,有可能出现多个线程同时访问一个共享/可变的资源(对象/方法..)情况,

                                                                让所有并发访问变成序列化访问!

           2、Synchronized深度分析底层原理?

           3、对象如何加锁(作用于类对象)?

           4、JVM锁的膨胀升级过程分析?

   =====

加锁的目的:序列化访问!!!

java两种锁机制:显式:需要通过代码去控制加锁和解锁

                            隐式:不需要...

问题1:jdk怎么帮助我们加锁和解锁?

解答:通过查看字节码可知:有几个指令需要关注:monitorenter(进入对象监视器)、monitorexit(释放退出对象监视器)

然后就进入JVM内存对象的(每一个对象有个对象头(Mark Word)...)

锁的几种状态(JVM锁的升级过程,膨胀触发条件:根据对象头的后两位:(01(无锁)/01/00/10(重量级锁)/11(GC标志))):

                       无锁、

                       偏向锁:单线程

                       轻量级锁:多线程,但是竞争不激烈,

                       重量级锁:多线程,追求吞吐量,激烈

 

问题2:实例对象内存存储是怎样的(美团中级Java)?

解答:对象的实例--堆区;对象元数据--元空间(以前叫方法区);对象引用--栈空间。

问题3:为什么不直接上重量级锁?

解答:可知JVM内部,直接上重量级锁会导致线程上下切换(涉及操作系统用户态-->内核态的切换,非常耗资源),接着问,为什            么耗资源

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值