00:00
行了,那么接下来呢,咱们继续往下看,这个叫做线成八所对吧?大家最好拿个笔,拿个纸,随时的看呢,都是输出的是什嗯,大家准备个比子啊,叫做THREE8MONITOR对吧,这会所以这个线制方所呢,题目呢很简单,什么呢,就是让大家判断一下,对吧,打印输出的是什么,打印的到底是,比如说咱们就写,随便写个印的是one还是这个to对吧,对吧,打印的是one还是to,那先看,那么首先呢,我在这里搞一个number,在这个number里边呢,我们也简单一点,对吧,就直接来一个avoid,一个叫做get one,然后set out one对吧,另外一个呢,叫what get to对吧,那么就是输出to对吧,See out,来个叫做to,那么这样的话呢,注意我呢都给他。
01:00
加上snchized的关键字是不是加容所呀,加上这个synchronized的关键字,那么将来呢,我启动两个线程,分别去调用这两个方法,那就来个问对吧?那首先得有一个number,等于用一个number,那么接下来呢,我启动一个线程,是不点并且点start呀,怎么来的线程new一个是不是random啊对吧?用这种内部类的方式在这里呢,第一个呢,我就通过直接通过number.get one打印这个是不就打印one呢?对吧?下一个呢,我再启动一个线程,再启动一个线程,嗯,我复制一份啊是不是一样的呀,对吧?那这个呢,就直接点get to,那么接下来大家判断应该输出的是one还是to,思考三秒钟下来呢,咱们看效果,哎,我这视频开始了吧,开始了对吧?接下来呢,看看效果,右键运行那。
02:00
换to啊对吧,咱们说这就是第一所,第一所,那我们说给两个同步方法吧,对吧,两个同步方法,然后标准打印是不是分别两个线程啊,标准打印,一个打印get one,一个调用get to,它输出的结果是不是就一个是one,一个是to啊对吧,说两个两个普通同步方法对吧?然后两个线程,两个线程标准打印,标准打印,那打印的是这个还是to呢?对吧?打印什么打印打印什么,刚才我们看的结果什么呀,一个是万,一个是to对吧,对吧,一个是one,一个是to,那么将来我们干嘛呢?注意看我在这个get one方法里啊,给它加一个right.sleep让他睡上三天吧,是不三秒啊对吧,让他上三秒钟,三秒钟以后打印是吧?说如果我是不加上个sleep。
03:00
对啊,那这样的话说还是这个get one get to,那应该输出的是什么效果对吧?思考三秒啊,那右键运行,注意看效果123是one to是什么呢?对吧?那得到结论说首先看到这个,我们说我在get one方法中是新增了一个sleep呀,对吧,说这个添加新增新增slide.sleep方法给这个谁呢?给get one对吧?那么结果是打印的是什么呢?打印的什么?一个叫做one,一个叫做to,对吧,对吧?那再看第三所,第三所我怎么搞呢?注意我在这个number里边再加一个普通的方法,比如说叫做get three,对吧?Th re,是不是加了个普通方法呀,那也很简单,直接输出three对吧,那么相应。
04:00
动的,我是不是也再加一个线程啊,对吧,再加一个线程,在这个线程中我去调用点get three说明了,那么这个时候大家在思考上面中打印的应该是什么?那么右键运行,首先three吧,然后是one two对吧?那么这three one two那相等所新增新增新增一个叫做get普通方法,新增普通方法叫做get three对吧,然后呢,结果是打印,打印的是什么呀?打印的就是叫做three对吧,然后是one,然后是two是不意思,那接下来再看第四所,第四所是什么呢?注意我们先把这个get three呢,我就给它注掉,我在这里呢,搞两。
05:00
Number对象看懂吧,现在是不是一个number对象啊,那现在呢,我再来两个number对象,来个NUMBER2等于用一个number,然后呢,注意我呢用NUMBER1调用get one,用NUMBER2调用get to,听懂啥意思吧?对吧,从number2.getto啊那么这样的话,大家再看结果是什么,那这个时候再去右键运行。是什么呀?To是to问呢,对吧,那因子母说说还是两个普通的同步方法吧,说两个普通的同步方法,然后呢,两个number对象是不是两个number对象啊,然后呢,我们说打印,打印什么呢?那就是two one是小伙伴,好那么再再看第五组,第五组是什么呢?接下来我新增把这个其中一个,比如说改概乱,我改成叫做静态同步方法。
06:05
看到了吧,我把get one改成静态同步方法,然后呢,我们说啊,然后一个对象一个number对象法,一个调用get one,一个调用get to,听不明三思吧,对吧,也就是说get one是静态同步方法,Get to是不是还依然是普通同步方法呀?然后一个number对象,一个调用get one,一个调用get to,对吧,结果是什么就什么对吧?那么这个时候右线运行方式to one对吧?那我们说说修改修改get万维叫做静态同步方法对吧?然后吐出不变呢对吧?然后呢说打印的是什么效果呢?一个是two,一个是万。
07:00
对对吧,对吧,那么接下来再看第六所,第六所要改什么呢?那么我改,嗯,直接改两个静态方法吧,是不是直接来两个静态方法呀,对吧,Get one也是静态方法,Get to也是静态方法,那么接下来我们说是不是一个number对象呢?接下来我们说看看打印的是one还是to,那这个时候右键运行,注意看这这是我运行了,是不是等三秒啊,三秒以后是不是才是犯错,对吧?这个时候大家要注意一下说对吧,其中修改修改两个方法对吧,方法均为静态同步方法,静态同步方法对吧?然后一个number对象啊,是不是一个number对象呢?然后呢,再问对吧,说到底是打应的two还是one,那是不是结果是one two啊。
08:01
对吧,顺序是one two,那么接下来呢,再看第七所,第七所是什么呢?我们一个是静态同步方法,一个是非静态同步方法,然后呢,我搞两个number对象,一个调用Y,一个调用to,听懂啥意思了吧?对吧,就是一个是静态同步方法,一个是非静态同步方法,然后呢,我搞两个number对象,一个get one,一个get to,问结果是什么,那右键与隐形是图案的,大家是算是找到点规律了呀,对吧?那接下来我们再再说说呢,说呃,一个对吧,叫做一个是静态同步方法,然后一个是非静态同步方法,然后两个number对象,是不是两个number对象啊然后。
09:01
后呢,再问打印的结果是错图案是不是图案呢?对吧?那么再看最后一组,那就是两个呢,均为静态同步方法对吧?然后呢,两个number对象,然后再问打印的是什么,也就是说我这两个是不是全都是静态同的方法,然后呢,两个number立下呢一个getone是不是一个get to啊那么右键运行结果为。是one to对吧,大家要要要要看清楚是不是有三秒的延迟,我运行了1234对吧,是one two啊对吧?那么结果得是什么呀?叫做Y出对吧?那这就是我们所说的线程大数找到回律了吗?找到规律了吗?没啥规律的感觉是吧对吧,不知道我在说什么是吧对吧,实际上这个线能八所呢,是我们用所在工作当中非常常见的一种情况,听懂吧,或者说八种情况是我们在工作当中非常常见的八种情况,我们所谓的这现成的八个所是什么意思呢?实际上刚才大家通过就只是通过我现在的这个野和。
10:24
呃,就现在通过我右键运行打印的这个效果,我们说Y是不是在等三秒啊,然后念完了之后是不是才是to,那么通过这个能证明一点什么呢?在同一时刻是吧?在比如说在某一时刻对吧,我们说是不是只有一个对象持有锁,当一个对象持有锁的时候,另外一个对象能拿到这个锁吗?不管你是一个方法还是两个方法,只要是某一个对象它座为锁了,然后有一个对象,或者说有一个县城七个车锁,其他的县城能抢吗?就抢不到啊,就是这个意思,听见吧,那么因此得到的结论也是什么呢?说我们这个线城八所的关键之处在于哪呢?说线城八所的八所的关键点在于,首先第一点,那就是我再问非静态方法的所是什么?默认是什么?
11:24
数this啊,这以前说过说非静态方法的所为,或者默认为叫做this,那么以前咱们也提过说静态方法的所为,哎,说对应的那个大class实例啊,也就是那个对应的什么大class实例,也就是那个类的对象对吧?对应那类也就是number的大class实例了,是不是可实例,那这是他们的所然后第二个关键点就在于什么呢?我们说在某一时刻内,说某一个时刻内我说只能有一个线程持有锁,不管无论是几个方法,不管你是有多少个方法,对吧,只要是某一个对象,比如说NUMBER2大有一个线程只有它作为锁的话,其他任何的线程能拿到这把锁吗?是。
12:24
不难用报啊,那这就是我们说所谓的线城八锁的核心,也是我们在应用这个锁的情况呢,八种注意事项,那么接下来的时间,大家呢,也把这八种情况一个一个试试体会体会,我们说当某一个对吧,就以这个为例,这个为例就能说清楚,我们说两个是不是就是静态同步方法所是谁所,说白了是不是就是这个叫做number.class啊,那我们说妈点class实例是是只有一个对吧,那也是说两个线程是不是同时执行啊,一旦被某个线程拿到了这个锁,另外一个线程能抢到锁吗?想不到它是不是就得阻塞,这就挂起来呀,什么时候等着这个线程锁释放了,另外一个线程是不是才进得去,才能拿到手。
13:17
是不是这个道理啊,对吧,那只要这个道理搞清楚了,只要找对了那个锁的对象,其他的就都无所谓了,那么比如说我们说,那我们说这个跟这个它有过所的竞争关系吗?对吧?这个普通工作方法跟这个就没有什么竞争关系啊,那我再说我把sta不去掉,它跟上面这个有竞争关系吗?因为上面这个静态同动方法的所示class非静态同步方法的所事,哎,是this。明白是吧,好了,接下来大家把这八种情况试一下,理解理解啊,哎。
我来说两句