课程标题:《从内核角度分析synchronized锁底层设计原理》
课程内容:
1.如何手写偏向锁/轻量锁/重量级锁
2.为什么JDK15 synchronized取消偏向锁
2.用户态到内核态切换的原理
3.synchronized锁底层设计原理
4.synchronized智能自旋设计原理
5.为什么JDK7取消用户设置轻量锁重试设置
5.如何从对象头中获取偏向/轻量/重量锁内容
7.synchronized锁的是Java对象还是monitor
8.monitor指令底层设计原理
9.内核角度分析synchronized锁底层设计原理
10.hostpot源码角度分析synchronized锁原理
腾讯课堂vip直播地址:https://m.ke.qq.com/m-core/live.html?cid=273548&term_id=100323286
1. 偏向锁:加锁和解锁不需要额外的开销,只适合于同一个线程访问同步代码块,无需额外
的开销,如果多个线程同时竞争的时候,会撤销该锁。
2. 轻量级锁:竞争的线程不会阻塞,提高了程序响应速度,如果始终得不到锁的竞争线程,
则使用自旋的形式,消耗cpu资源,适合于同步代码块执行非常快的情况下,自旋(jdk1.7
以后智能自转)
3. 重量级锁:线程的竞争不会使用自旋,不会消耗cpu资源,适合于同步代码执行比较长
的时间。
用户态和内核态转换
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210607205315174.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQwMDE1MjM=,size_16,color_FFFFFF,t_70)
NeW一个对象占用多少字节呢?
对象如何组成的?
对象头 Mark word Klass pointer
实例数据---成员属性
对齐填充
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210607210624460.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQwMDE1MjM=,size_16,color_FFFFFF,t_70)