00:00
好,同学们,我们继续通过这儿我们三种方案的对比,我们明白了三角形一下子变成了什么?两个维度的一个长方形就能搞定帕克帕克,这就是为什么洛克斯珀特横空出世。好,那么。对于API级别的掌握,我们到这儿也清楚了,它底层是按类,那么下面我们来看一下。这儿。有句话。与法不同,许可证不会积累,最多只有几个一个,这是官方文档上对洛克斯坡的一个说明。为什么我刚才强调说这句话比较重要呢?来,同学们回到我们的代码。我们现在park。安帕。我们都晓得这是T2对T一发通行站。这是T1在这儿被拦截下来了,有站你才能走,没站你会被拦截下来,阻塞下面我们的问题。
01:00
单一的帕安帕没问题,那么下面现在来跑一下,你们觉得能跑过吗?走起来,同学们看看我们程序运行的效果。T2发出通知啊。OK t1有时间无所谓。我们说过lock support,对于等待唤醒通知谁先谁后无所谓,此时大家看发生了什么问题。是不是卡在这儿了,程序没往下顺利的结束,这个灯没有灭,那是不是我们的通行证不够呢?来吧。说两个不够。我变。多一点,这次给你发个够。来,同学们大家请看,T2发出通知,先提前发了,T1也进来了,在这这个时间片你晓得的,那这个时候同学们有没有往下走,根本没有打出被唤醒这个动作。所以说说明什么,这么使用我们的程序是有问题的,那么大家思考一下,结合刚才我们的理论,这是为什么?因为许可证怎么着不会累积,最多只有几个一个,你这写一个和写1万个是一样的,所以说这就是为什么我开始的时候在官网解释这一再跟大家强调,这有句话非常重要。
02:16
There is at most,几one许可的累加上限是一,所以说请这同学们一定要正确使用,不要出现多对多,一般帕克安帕一站对应着一车,就这么放行,OK,一站一人,一站一车好。重点说明很重要,以及对我们前面洛克斯port讲解案例适用于原则的一个小小的总结和串讲,那么来彻底明白罗克support它的强大和优点。首先罗斯support是一个线程阻塞的什么工具类,哎,体会一下这句话。用于创建什么锁,人家自己就持有一把锁,所以不用在锁框里面和其他同步类的基本线程的什么阻塞源源,就是玩等待唤醒通知机制啊,更方便,那么所有的方法都是静态。
03:10
OK,直接support点取,这些方法经典的是帕和安帕。你阻塞了哪个线程,你就要对这个线程发一个许可证好,所以说它可以让线程在任意位置阻塞,阻塞之后也有对应的唤醒方法,按帕克,那么归根结底,它底子调用是按shift。中的一大堆native代码,OK,下面我们来看一下罗克port提供的帕on,帕是实现阻塞线程和解除线程的这个过程,那么首先lock support和每个使用它的线程都有一个什么permit许可证相关联,哎,能不能通过就看你有没有证,每个线程都有一个相关的permit,最多只有一个重复调用PA也不会积累凭证。那么形象的理解,线程阻塞需要消耗凭证permit才能放行,对吧?这个凭证最多只有一个,你进地铁是不是一定要刷闸机才能进去?OK,除非你什么提前购票了,那么OK,这个呢,可以放行。所以说当调用帕阻塞的时候,就要看你有没有证,如果有凭证,直接消耗掉这个凭证号,然后。
04:17
可以正常退出走人,如果没有凭证,就必须阻塞,等待凭证可用好,那么park相反,调用一次帕,它就会对某个线程我们强调过。安帕是不是要这个,所以说安帕克呢,是相反的,它会使它的使用会增加一个凭证,发一个凭证,但凭证最多只能一个,累加无效,好。那么下面来看一下我们的面试题,为什么可以突破等待,就是我们一般都是是说过这个wait,然后在notify原有调用顺序,这个就是support的灵活强大之处,因为安帕获得一个凭证之后,再调用帕克方法,就可以名正言顺的凭证消费,故不会阻塞,相当于高速公路上我们走ETC,我已经提前充好值交过费了,直接就走,OK,先发放了凭证,后续可以畅通无阻。所以说他对这个他不是按照这个顺序来看,他是看有没有凭证,你的凭证是后面拿到的还是提前准备好的,我不关心顺序,有证就放行,没证就拦截,就阻塞好。
05:21
为什么唤醒两次后阻塞两次,但最终还会阻塞?这个线程就是两个帕,两个UN帕。凭证的数量最多是几一连续调用两次帕克和调用一次安帕的效果是一样的,因为只可以发一个凭证调用两次。帕克却需要消耗掉两个凭证,那么证不够就不能放行,因为安帕克不可以什么累加,最多就一个好,那么感谢各位同学的聆听。那么下面我们对。洛克和线程中段第五站就给大家介绍到这儿。
我来说两句