00:00
各位同学大家好,接下来为大家带来第12章SNCH与所升级,OK,说到它synchize无人不知无人不晓,绝对是我们的老朋友了,那么从hello word的多线程编程入门开始到卖票,这个呢,已经大家用过多次啊。那么。如果你现在对synchize的理解也就是保证数据的一致性、安全性,反正多线程竞争了,并发了加把锁。安全一致搞定,那么这个是远远不够的,基本上大厂不会问你,你对SNCH目前已懂的一定是往死了问,往底层问好,那么这个所谓的size所衍生出来的所升级,后面这个才是我们的重点。那结合我们之前。两个知识点。第一个。搁到这儿。大家对对象头ma word和Java对象的内存布局,我认为大家应该是非常熟悉了,这是第一点。第二个。
01:01
前面在第四章的时候,我们说一下Java的琐事来吧,我们是不是说过这么一个东东,无锁?偏向所、轻量所、重量所来深度的分析,源码的讲解后续第12章所以说承上启下,呈前启号开启。我们今天已经具备了对象头和内存布局的前提知识,那么来给大家重点说一下size与锁升级,说白了就是给大家讲解一下为什么要加锁,加锁的演变,GVM从JAVA8开始对size底层关键字的优化。那么什么叫无锁?什么叫偏向锁?什么叫轻量锁?什么叫重量锁?我们一般所说的snchize到底是什么?所是轻还是重,还是偏好?那么同学们老规矩。还是拿大场面试题说话,仗怎么打,兵就怎么练。开工谈谈你对S的理解,我相信这种面试题出来谁都能说两句,但是你不可能跟面试官说啊,就是卖票怕超卖。
02:11
错票重票加把锁,我认为这个你可能就GG了。那么下面再来看的所升级。那么只要你能答的出来,刚才我所说的无锁、轻锁、偏锁、重锁,一定会挨个挨个的问你升级的顺序是什么,每一种所用在哪,怎么用的底层原理?再来看看同学们的反馈吧。兄弟们,来。S的优化过程,请详细说一下偏向锁和轻量锁有什么区别?直不愣登的就来问你了,所以说兄弟们会用,很简单,哎呀,要么同步代码块,要么方法上加个关键字啊。可问题是。会说吗?他真真正的考点在哪?好,所以说本站我们的总体路线,首先来看一下阿里巴巴要求所谓的。高并发的时候啊,能用无锁的数据结构不要用锁,如果真要加锁的话,就要用虚块锁,如果扛不住了,那么这个时候呢,你再去用方法的S,然后呢,一句话就是能用对象锁就不要用内锁,他给你的要求就一句话,尽量使加锁的代码块工作量尽可能小,说白了就是什么,不要一株竿打死一船人,你在方法上加个S,那么整个方法都锁了么,尽量的用同步代码块等等等等哈。
03:29
那么我们这儿要提出来。至少得到所肯定。能够保证。我们数据的一致和准确,但是这个是个重量级的操作,直白的来说,一般啊,我们默认为SNCH是个重量级所,那么它是能够解决我们数据一致性和安全性的问题,那么这个时候就会晓得锁确实能搞定安全。但是会带来性能的急剧下降,因为同一时间段是不是只能有一个线程进去干,那么我们不加锁很好,那么这个是倒是并发性是最高了,但是又带来安全性下降,那么怎么能求到一个平衡呢?那么也就是说不要出现一种二极管灭。
04:10
量。然后呢,零一。一下子就捅到这儿。那么我们能不能就像我们平时打。You。预防针看小病,那么比如说你只是个普通的头疼脑热。OK,你附近所住的小区的。卫生所就OK了,你不要一口气捅到三甲医院,更不要一口气捅到ICU对吧,那么所以说呢,这个时候时候的话,在原有的基础上。要么没锁,要么有锁,中间出现了两个偏向锁和轻量级所,直白了无所,那么这个呢,偏向锁相对于程度少一点,然后到轻量级锁,提前说就是我们以前说过的CS啊,那么实在不行了,再捅到重量级锁,因材施教,量体裁阶,你别一口气就弄到这,尽量别这样,那么中间又给你多了两个状态,为什么?因为重量极所容易导致多线程下面的阻塞。
05:12
唤醒通知这些繁杂琐碎的工作,那么这个时候我们就想,能不能尽量不要阻塞。如果。我们在。普通的医院就能解决的问题,就不要捅到三甲医院就这么回事,所以说都是在安全和性能之间再找一种折中和平衡好。那么下面我们就要注意刚才已经说了,无所偏向,轻量重量么,怎么体现呢?那么这个就是我们前面要学马word所知道的背景知识和相关的专业要求,一句话,对象头有马word对象标记根据所标志位的不同而被复用及完成我们的所升级的策略要求。那么这张图前面多次说过,相当重要。
06:01
如果你没加锁,64位的马克的对象头的标记就是001,偏向锁就是101,轻向锁,自选锁或者没锁的这种主要是氢量,那么这种状态的变化,那么这就是000。重量极所,那么也就是我们日常所说的think,那么这个就是010 OK,那么就算这儿没写,你可把单子都是零,那么可以说得到主要的是看最后两位啊,那么可以这就这种所标注位的变化来决定我们所的状态和最终我们的升级策略,OK,好,那么同学们简单一句话,对于所升级,那么开篇入门的小结哈沃尔德级别的介绍,就记着这个就OK。好,后续我们再继续深入展开。
我来说两句