讲讲Synchronized

前言

网上关于Synchronized的博客和资源有很多,相信百度一下对程序员来说都不是什么难事,推荐看一下敖丙的阿里面试:跟我死磕Synchronized底层实现,我满分回答拿了Offer,讲的挺好的
在这里插入图片描述

本文的定位在于,帮助自己和其他有需要的小伙伴,以一种容易记住的方式跟别人交(chui)流(shui),所以很多知识点能不搬运就不搬运了,默认大家都会了

正文

JDK 1.6之后针对Synchronized做了很多的优化,可以说Synchronized现在可以跟JUC包中的工具类相媲美,锁升级功不可没,锁升级是为Synchronized而生的

小技巧

在这里插入图片描述

所以关于Synchronized,记住一个锁升级就好了

严密的推理

既然提到锁升级,那跟它息息相关的对象头,是不是也要稍微介绍介绍,谈到了锁对象,是不是也得讲讲锁代码块和锁方法的区别,讲完这三点,其实Synchronized也介绍得差不多了

总得留一些让面试官提问吧
在这里插入图片描述
好了,现在回忆一下刚刚的推理过程,锁升级 → 对象头 → 代码块,所以本文的大致脉络就是
在这里插入图片描述

1. 锁升级

在这里插入图片描述
一谈到锁升级,好多博客都会贴这张图,也不知是出自哪位大佬之手

不了解锁升级过程的小伙伴建议放大看多几遍,毕竟学习知识不能总是投机取巧哦,该啃得还是得啃

复杂的如果实在记不住,就先记这个吧,以后再慢慢熟悉

在这里插入图片描述

2. 对象头

在这里插入图片描述
关于缓存行伪共享,可以聊到JMM内存模型,因为已经跟对象头没太扯上关系,所以以后再出一篇单独介绍

3. 代码块

在这里插入图片描述

分三点讲完了上面涉及的知识,剩下的,好像也就as-if-serial和happens-before了,看了好多文章都没讲清楚这两块,所以没完全掌握的同学请谨慎主动提及。当然已经掌握了的同学就当我没说

参考文章

阿里面试:跟我死磕Synchronized底层实现,我满分回答拿了Offer
synchronized锁升级详细讲解案例:代码+流程图

结语

好了,下次跟被人吹水的时候,谈到Synchronized时,脑海里记住个锁升级就好了。再多的细节,等我下次复盘再补充吧~

最后还是那句,本人所有博客不做商业用途,如若涉及侵权,还请联系删除,互相学习,一起进步~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值