Synchronized相关的面试题

本文详细解析了Java中Synchronized关键字的底层实现,包括锁升级的概念,以及偏向锁、轻量级锁和重量级锁的工作原理。通过对比不同锁的区别和联系,帮助读者深入理解Java并发编程中的锁机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.Synchronized关键字的底层实现是什么?

2.什么是Synchronized的锁升级?

3.什么是偏向锁,轻量级锁,重量级锁呢?

 4.各种锁之间的区别和联系?     


1.Synchronized关键字的底层实现是什么?

        从各个层面分析

        1.java代码: synchronized

        2.字节码的层面: monitorenter,moniterexit

        3.jvm 执行过程中会自动升级 无锁--》偏向锁---》轻量级锁---》重量级锁

        4.lock comxchg

2.什么是Synchronized的锁升级?

        1.6之前,synchronized是一个重量级锁,1.6之后,jvm对synchronized进行了锁升级,出现了锁的状态从无锁-->偏向锁-->轻量级锁--->重量级锁这个过程。

3.什么是偏向锁,轻量级锁,重量级锁呢?

        偏向锁是第一次执行synchronized的代码,会把锁的线程id放在mark word里,下一次如果是同一个线程进来,只需要先判断,mark word中的线程id是不是当前的线程id,如果是当前的线程id,直接执行代码块中的代码。

        轻量级锁:当前锁状态是偏向锁,被另外的线程访问,此时偏向锁就会升级为轻量级锁,其他线程会以自旋的方式获得锁,不会阻塞。mark word存储胡中指向栈中锁记录的指针。

        重量级锁:如果锁的竞争激烈,达到最大自旋次数的线程,会将轻量级锁升级为重量级锁,等待的锁会直接挂起。markword中指向互斥量的指针。

 4.各种锁之间的区别和联系?     

        偏向锁: Mark Word 里存储锁偏向的线程 ID 标志位 01

        轻量级锁:指向栈中锁记录的指针 00 锁竞争失败会自旋

        重量级锁:指向互斥量的指针 11 锁竞争失败会阻塞

 一图胜千言

        

参考

1.https://www.jianshu.com/p/eac466494477-----------cas 原理

2.https://www.jianshu.com/p/da9d051dcc3d----aqs

3.https://blog.csdn.net/u012102536/article/details/103070769--- aqs源码分析

4.https://www.cnblogs.com/jxxblogs/p/11751944.html-------线程池的状态

5.https://www.jianshu.com/p/389b58856894----- java 线程池源码分析

6.https://www.jianshu.com/p/117571856b28---- java 线程池的实现源码分析

7.https://www.jianshu.com/p/063ebba64ec4---- java 线程池原理与Executor框架

8.https://www.jianshu.com/p/36eedeb3f912-----偏向锁,轻量级锁,重量级锁详解

9.https://www.bilibili.com/video/BV1s741127Gn?from=search&seid=14128259413075469454 ------ 偏向锁,轻量级锁,重量级锁视频

10.https://blog.csdn.net/lengxiao1993/article/details/81568130---- 偏向锁,轻量级锁,重量级锁的详解

11.https://segmentfault.com/a/1190000022904663

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值