温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
同学们,我们继续通过前面的讲解,我们清楚可重入锁的理论,可重入锁分别是什么意思,那接下来代码说话,按照我们的分类,影视和显示,所谓影视和显示。就像我们开车的自动挡和手动挡,自动挡就是size,关键字,由GVM层面自己给你控制。手动挡,那么就是我们的显示锁自己写re lock。Lo,那么切记它们两个啊,Snchize和lock都是可重入索,那么好,对于SNCH关键字主要有部分构成,一个叫同步代码块,一个就是S我们的同步方法,下面我们来挨个来。编码来证明一下我们的结论,好。那么同学们。我们呢,直接过来。在这儿提前把这些节约时间给大家先写好,那么再次强调理论上都给大家。做好了注释,到时候代码发给大家,体会一把所谓可重锁,可重复可递归调用的锁,在外层使用锁之后,在内层仍然可以使用,并且不会发生死锁,这样的就叫可重入锁。好,那么同学们。
01:13
那方法是size static的,那么在这块啊,我也就定义一个static,那么来同学们object。那么这个时候object look,哎,我这是不是定义了一个所对象look,哎,没问题吧,那么同学们。我们在这儿假设啊,Public static。那么这儿呢?一。我这就有静态方法,我这就不用谬了是吧,直接对象点直接M1就可以在这个main方法里面使用,那好。我这儿干什么呢?内线程一启动的时候是不是会掉这个M1,这个M1方法来吧你。新袋子这一波能跟上,那么同学们。
02:01
我们在这儿假设我这个线程啊,就叫T1。然后呢?什么叫可投入呢?大家看我size这个是不是object?洛克,哎,那么好。直接按照我们原来最经典的写法,现在是不是M1这个方法一触发以后,T1这个线程就进来了,T1这个线程了以后,那么这是不是就是我们的外层。要用这一波OK吧,T1有个look a,那么好在这个同步方法里面,再有这个同步方法look a。那么来和刚才一样。懒得写了,这个是什么?是不是就是我们的?忠诚调用同学们,那我就是没写其他的,你也应该马上明白杨哥要写个什么东东了吧?那么大家再看我再落克,哎,那你懂的,这个是不是就是外中,然后这是什么内存调用啊,兄弟们,这波能不能跟上,那么大家请看我这有一个M1方法。
03:08
一个线程进来了以后获得了锁,哎哎哎,是不是同一个所在外层使用了这个锁在内层仍然可以使用。不会发生死锁,因为为什么S天生就是个可重入,否则T1进来第一次先获得外层这个洛克,哎,那么一般我们都说过要获得所需要等值所示范,但是进去了以后又碰上中层了。不用等着你示范,我可以把它认为是同一把锁好,那么这样才能保证我们的可重入性。那么同学们漏眼。搁到这儿,我们直接一入大家呢,非常清晰的呢,就可以看到我们现在运行的结果是不是T1这个线程外层中层内层。直接如入无人之境,是不是就像我们刚刚所画的这个图一样的外中内进来,只要是同一个对象的锁,不用等着你示范这一波,OK吧,好,那么这个就是我们的可重入锁。
我来说两句