温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
好,同学们,接下来给大家介绍众所,那么也就是我们的最后一关,小德的。从没有锁啊,假设到现在偏向锁只有一个,到现在轻量级锁,那么尽量不阻塞,还是用cns,到最后实在没办法了,捅到你这儿了,那么。来吧,就是我们的重量级对吧。那么自然而然用户态内核态的切换,这个也是没有办法的办法,但是由于Java虚拟机有偏向和轻量机锁给我们做了一定的缓冲和优化,整体而言JDK是越来越优秀的。那么好,同学们老规矩,理论一说这个重所大家都明白,那么关键是代码的证明怎么能够看到重量极所,那么前62位变成指向互量,那么就说如果是轻量极所是指向线程站中的那个lock record指针,而这个重量基数就是指向互斥量,那么相当于说就是我们的那个莫妮塔这个东东的指针了,那么最后的尾数号是幺零,来,代码证明理论学习一起走。
01:02
首先,同学们请看。有大量的线程参与所的竞争了,冲突性很高,那么锁的标志位我们大家呢?Log眼指向互斥量就是重量级所的这个指针尾缩幺零,那么Java中S如果到重量级组了,那么是基于进入和退出莫塔管程对象来实现的,这个我们前面都反复说过了,在编译时会将同步块的开始位置插入模塔N,那个指令在结束时插入莫塔it。进和出,当线程执行到这个N垂指令的时候,会尝试获取对象所拥有的莫塔的所有权,如果得到了就说明获得所,也就是它指向这个莫尼塔,会在莫妮塔的欧当中存放当前线程的ID,那么这样它将处于锁定的状态,除非你退出同步块,否则其他线程是没有办法拿到这个莫塔这个管程的,因为只要他还没有exit,别人无法抢。那么这个我们前面已经多次给大家说明好,那么这个代码的演示也很简单,来我们就不再废话,因为这个时候无非就是什么多个线程,那么来同学们同样一个对象。
02:10
T1T2我这儿抓图呢,也就由于版面和板幅的限制,那么就很少啊,你可以写个三五个线程越来越多,那么T1T2T3那么来对于同一把锁,同一个对象,大家请看是不是就是我们的幺零。10OK啊,这个很简单啊,同学们,因为写了这么多,大家可以自己下去练一下,因为啊,重量级锁是我们最简单的一种锁,那么所以说尾号我们就可以看到,就是我们的什么10OK,那也没什么好说的,前面已经是什么山穷水尽了,直接同道重量级所,那么我们这儿就是幺零。
我来说两句