【面试官】你先说说synchronized的实现原理

  • 面试官:知道可重入锁有哪些吗?
  • 面试官:你先说说synchronized的实现原理?
  • 面试官:那synchronized有什么缺点?
  • 面试官:为什么上下文切换要保存当前线程状态?
  • 面试官:可以怎么解决synchronized资源消耗吗?
  • 面试官:那它们都有什么优缺点?

大家好,我是南哥。

一个Java学习与进阶的领路人,跟着南哥我们一起Java成长。

文章目录

  1. 可重入锁
  2. synchronized实现原理
    1. synchronized缺点
    2. 保存线程状态
    3. 锁升级
    4. 锁升级优缺点

1. 可重入锁

面试官:知道可重入锁有哪些吗?

可重入意味着获取锁的粒度是线程而不是调用,如果大家知道这个概念,会更容易理解可重入锁的作用。

既然获取锁的粒度是线程,意味着线程自己是可以获取自己的内部锁的,而如果获取锁的粒度是调用则每次经过同步代码块都需要重新获取锁。

举个例子。线程A获取了某个对象锁,但在线程代码的流程中仍需再次获取该对象锁,此时线程A可以继续执行不需要重新再获取该对象锁。另外线程如果要使用父类的同步方法,由于可重入锁也无需再次获取锁。

在Java中,可重入锁主要有ReentrantLock、synchronized

2. synchronized实现原理

面试官:你先说说synchronized的实现原理?

synchronized的实现是基于monitor的。任何对象都有一个monitor与之关联,当monitor被持有后,对象就会处于锁定状态。而在同步代码块的开始位置,在编译期间会被插入monitorenter指令

当线程执行到monitorenter指令时,就会尝试获取monitor的所有权,如果获取得到则代表获得锁资源。

2.1 synchronized缺点

面试官:那synchronized有什么缺点?

在Java SE 1.6还没有对synchronized进行了各种优化前,很多人都会称synchronized为重量,因为它对资源消耗是比较大的。

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

Java面试突击 文章被收录于专栏

👉以面试官面试的形式,涵盖了你怒怼大厂面试官、拿下大厂面试所需掌握的核心知识、面试重点! 👉相信一定对你顺利通关面试、拿到理想Offer有所帮助! 👉花费大量精力去制作本专栏,创作不易,各位的支持就是我创作的最大动力!

全部评论
2 既然引入了轻量级锁,那么你再说synchronized资源消耗大 是不是有点歧义
点赞 回复 分享
发布于 04-01 20:19 河南
666
点赞 回复 分享
发布于 04-20 21:49 广东
德州仪器
校招火热招聘中
官网直投
支持大佬
点赞 回复 分享
发布于 04-25 23:38 广东

相关推荐

上海高顿教育 测开实习 4k一个月
点赞 评论 收藏
分享
高顿教育,base上海。刚进去腾讯会议里有两个人,我以为是群面,结果一个面试官问完后另一个面试官来问。无八股,项目拷打。kafka流式处理的过程?你用到了时间窗口?为什么要用这个,和其他的窗口相比呢?(给我问懵了,我就调用了个api)DFA算法是怎么实现的?为什么用ArrayIist?Linklist和arraylist的区别?消息如何保证顺序性?从生产者到消费者整个过程说一下反问。业务就是教育这类系统的开发多久出结果?一两天内然后结束了,让我等他一下。过了一会另一个面试官,就是一直在旁听的那个面试官和我聊天。他说我说话停顿,语速比较慢,是不熟悉还是性格就是说话比较慢我有点哭笑不得,我说话比较慢其实是一直在想从哪里开始说会说的比较通顺,想让面试官听懂而且毕竟全程没开摄像头,光聊天,我都想拿画板给他演示了然后问我专业的课程,学的基础如何,然后还问我有没有研究源码的习惯,我说有,他让我讲讲比较拿手的我就说了hashmap的底层原理,他问为什么负载因子是0.75,不是0.6?不是0.76?不能是0.8?能不能修改?怎么修改?当时记了一下,没仔细去推敲,全去理解扩容机制了,然后磕磕绊绊的说不出来,尴尬了然后问了下评价,面试官说掌握的技术还可以,也有自己的思考,然后给了两个建议技术栈不是越广越好,应该多了解底层原理,像hashmap底层为什么这样实现,这些数字是什么含义?能让我走的更远第二个就是数据结构和算法,是必须要弄透彻的部分,他说程序无非就是数据结构+算法这两部分弄清楚之后,就会发现其他框架也有类似的东西总体来说还不错,感觉第二个面试官更厉害一点,我还担心说hashmap底层原理没说出来给我扣分,他说不用担心,我们就是聊天,不会影响最终结果希望快点出结果对了,面试官说看了我的博客,没法判断我掌握的情况都是之前写的博客,没什么技术含量
查看8道真题和解析
点赞 评论 收藏
分享
18 70 评论
分享
牛客网
牛客企业服务