00:01
那各位同学,我们继续。那在上一讲呢,我们已经给大家完成了线程不安全。接下来我们看一道新的题目。Java的锁。注意。Java的锁和MYQL数据库的锁。有一样的地方。类似的地方,也有不同的地方,现在我们着重讲解的是Java里面的。多线权里面。那么我见过一道变态的题目哈,就是阿里巴巴的上面问答题。也算要应用题吧,给你罗列出了15种所之多。那么重点。公平非公平可重。若递归所自选锁。到后面我们会讲什么?毒所。解锁。然后呢,它还有一些什么分段锁等等等等一大堆乱七八糟的。好,那么现在我们把重点这些讲明白。
01:01
请手写一个自选锁。有没有?前面老师是不是故意埋了个坑啊?你主,只要你跟着我来,你一定内功会增加。还是那句话,不是会用就行了,你得懂原理。首先,何为公平?何为非公平?我们有没有用过公平锁和非公平锁呢?那么来,同学们。它是什么?我们不妨在没讲之前,老师呢先。干一件事啊,随便乱写一个代码。我相信这段代码同学们极其熟悉了吧?我什么都没做。
02:00
点开源码。难分。声卡。他读这个单词也是应该知道什么意思啊。是不是非公平的意思啊?好,假设。这个单词是不是公平?此时我点开。布尔行。请看。这个范。如果为错。什么情况?如果不为错,又是什么情况?能跟上,那么不废话,干脆兄弟们。杨哥直接带着大家刷一下是吧?API看这个类的各种方法。创建一个原创组的实验。第二种,干嘛要传个布尔值进去,那老师说白了,我这要是空,是公平还是不公平呢?挺好,您这要是什么都没传。
03:04
代表是不公平。什么意思呢,请看。True should use a fire order policy。Order policy是不是排序的一种策略啊?宁夏直线。那老师我不懂什么你讲人话,什么公平不公平?听好。我们这儿看着。我现在先把它删掉,这个是不是同学们用过的。创建一个实例这个东东,这个等同于U。Re lock什么鬼?Force。也就是说,哥们儿。你就是不写。轰炸相当于写了个什么,放心不会错,杨哥是不是全是拿AP或者源码说话,大胆说。也就是说哥们,你开始你有原程lock,你有一个可重入锁的话,这个东西天生就是一个什么非公平锁。
04:00
那么这个时候同学们抬头,那你跟杨哥讲。从你们的体会,什么叫公平,什么叫不公平呢?这个锁的公平,你看我们现在说第一组锁叫公平和非公平锁。好。讲人话。一句话给你讲明白。现在各位同学,杨哥,讲台正对着这儿,是不是有七个同学?公平所。就是队列先来后到。这个同学问我问题,问完了一号,问完了二号,二号问完了三号,三号问了四号,最公平的,咱们去。课间休息或者是放学打饭的时候,大大家是不是先来后到,永远排在最后?同不同意?那杨哥,什么叫非公平?一句话,某个同学允许他突然跑上来加塞提问,明白了吗?这个就叫非公平。那么言下之意什么意思呢?
05:01
就是说某一个强锁的现场。他。默认是非公平,非公平允许加三,它的意思是加三,我能加上我就加,加不上我带。变成公平,有点类似于哈,现在呢,这七个都是南山。好,一号同学问完了,突然我要准备是给二号同学回答问题,然你们班来了个美女,不好意思,我打断一下杨哥,我问一下,今天下午三点钟你还要讲什么?我可能有点事,想提前走了,我说没事,下午三点做练习,不讲了,你可以走了,好的,杨哥,再见。你跟我讲,现在这个女同学上来是不是叫加三题外。那么正常而言,是不是应该我第一个同学完了以后,我应该马上回答排队中的第二个同学。但是一般而言,第二个同学干嘛怜香惜玉,都允许这个同学加个三,听懂了吗?正常情况下,你们班这个男生,第二个坐的这个男生,他不会说滚,不许加三,后面排着去。听懂了吗?那么这个时候这个女孩子会怎么着?能加塞效果是不是提升了,否则他就是问一句话,他可能就用我五秒钟一个回答,他要是老老实实排在最后,你跟我讲整体性能是不是下降。
06:07
有点类似于什么,你们现在去银行。会发现。银行的大堂经理会说。只是。取款的请专门到二号窗口只办这么一个业务的,听懂了吧,那么这样是不是比较快?明白,那么所以说请看。公平所多个线程按照申请所的什么来。那么请问这叫什么?Order in policy是不是叫顺序的策略的意思啊?最经典的是不是队列先到先得?好,那么各位亲,类似排队打饭,先来后到,秒倒最公平。非公平获取所得顺序并不是按照申请所的顺序,我刚才说过了,这一排我排着七个同序,第刚才来提问的那个女同学,正常情况下公平,她是不是应该是第八个同学?但是他突然女士优先吗?Lady first他跑过来,同学不好意思,我打断一下,杨哥,我马上给你下午三点上不上课,我要请假要走了。
07:07
那跟我讲他这是不是加三,这个时候这个女同学是后申请的线程会比前面先申请的线程优先获取,所在高并发下的情况优先获得杨哥的回答权,听懂了吗?有可能会造成优先级反转或者饥饿的现象。抬头反转大家能理解吧,一号同学完了,正常情况下是不是应该是二号同学,但是现在被八号同学这个女同学反转了,她加三了对不对。那杨哥,什么叫饥饿呀?结果呢?那个女生又过来加三了。每次来加三。第七个,同学们排队排了那一天都没问到这块,他是不是就及格了,能理解。好,所以说什么叫公平锁,什么叫非公平锁,那两者的区别呢?
08:01
注意,那杨哥我们用的现在至少用两种锁,一个叫洛,一个叫synchize,那杨哥讲了说en lock括号里面什么都不写,默认是公平还是非公平?大胆说什么?正确,相当于是填了false false就是非公平,听不听得懂,那么这个什么SYNCH呢?你又觉得以前我们学的,去年我们学的。那么这个时候请看。并发包中的洛克布尔行。回答我是不是这话?言下之意,并发包装圆唇的洛克加个布尔行fair first就是不公平所。错,就是公平锁,公平的锁就是不好意思啊,先来后到对不对?但是性能下降,顺序得以保障。好,那么呢,默认什么鬼,非公行所。两者的区别官网上如下,对于公平锁这个线程获得一个公平锁,因order order是排列顺序的意思啊,按照他们申请的顺序听啊,就是这一排同学,1234567 OK,先来后到。
09:14
公平锁很公平,并发环境中每个线程在获取锁时会先查看此所维护的等待队列为空,那么当前线程是等待队列中的第一个探索。否则加入队列,队尾去排队,以后按照先进先出的规则,直到轮到自己。排队打饭,公平锁能跟上,那么非公平呢,噼里啪啦。非公平所比较粗鲁,刚才讲过了,那么本来那个女同学应该是第八个,但是他。过来加十。上来就直接尝试来占有所,上来就直接来问杨哥。那么这个时候干嘛。如果。尝试失败。他跑去公平,比方说这个同学我不好意思啊,这个第二个同学,他假设他现在加上来抢占杨哥。
10:01
杨哥说,这位同学虽然说你是妹妹子,你是美女,但是不好意思,第二个同学已经等了很长时间了,要不你还是排队,我先回答第二个同学,这个时候相当于说是不是?杨哥没理他。他尝试占用严格失败,那么这个时候这个女孩子是不是只好说,哦,继续回到队尾,排在第八个听懂。那么。这个时候请要注意re ENT lock默认非公平锁,所谓公不公平。一句话,公平就是先来后到,按序排队非公平。比较糙,过来就先抢,那抢到了我就加三,抢不到了我再排到队尾在公平OK,耍流氓有点,但是呢,一般嘛,什么耍流氓的,他是不是性能效果比较好啊,就是什么先抢先得。公平就是先答公平所是先来后到,非公平锁是什么?先抢先得,抢不到我再先来后到,OK,好。
11:01
那么这个时候呢?题外话。Re,而言?默认是非公平,非公平所的优点在于吞吐量比公平所大。那么好,同学们还是刚才那个排队那个case啊,正常情况下,杨哥是不会说好,一号同学结束了,二号下一位,二号完了下一位,三号11111听到,有没有可能你们班出现这种情况,你们班。三个女生同时上来问我问题。那个架不住了,你必须得回答了,对不对?第二个同学是轮到你了,但是三个妹子过来求求题,你怎么也得卖给你们班妹子。面子嘛,本身你们班女生就少,那么这个时候干嘛?优点是不是在于什么?痛苦量大,那么三个妹子来问我,OK,比公厕所要大,听懂,否则三个妹子是不是八九十啊?再来对于新而言是种什么锁?也是非公平。明白,好,那么你说。杨哥还是有点不大明白。
12:00
我们讲过。Snchize,其实说穿了是不是等同于我们的那个洛类似对吧?假设哈,什么叫非公平?假设我现在要去卫生间。不好意思啊,突然后面那哥们儿,哥们儿不好意思啊,我昨天吃坏肚子了,我比你着急,你看您能不能让让我。我跟他说,你给我发个红包,我就让你对不对。好,你要他不给我发,你懂的,他要不给我发,我是不是在门外,在外面再加一把锁,今天就别想出来了,那么言下之意哈,这个时候干嘛?他要上厕所,他比我着急,我一般他拉肚子优先级比我高,哎呀,江湖道义我帮他一组,那么这个是他是不是正常来说,公平而言,是不是轮到我了,但是呢,我让他被他抢到了,听懂好,所以说一定要注意re enter lock,默认是什么锁非公平等同于你,你什么都不写,就等同于加了个for明白。好,那么这个就是我们的什么公平和非公平锁。
我来说两句