00:00
那接着呢,咱们还差一个就是使用同步方法呢,来解决继承thread类的这个线程安全问题。啊,这时候别晕了啊,咱们呢讲这个创建多线程两种方式,第一个呢叫继承,第二个呢叫实现reable,现在呢,咱们来处理这个安全问题呢,也有两种方式,哎同步代码块,哎这个同步方法现在咱们其实是不是两两组合的去说的呀,诶咱们现在同步代码块呢,讲了这个实现,然后呢又讲了这个继成说完了,然后呢,同步方法呢,咱们刚才呢是把这个这实现这个讲了,还差这一个在通过方法来这个解决这个继承的这个现场安全问题啊再新建一个。诶,Window test4行这里边咱把这个二里边的这个拿过来。从这。C。
01:02
CTRLV一下。嗯,然后呢,我们把这个前面这个所谓的这种同步的这个数据呢,同步代码块当中涉及到的一些这个东西呢,我们都干掉。不要了。Shift一下。嗯,这是一个它,然后这块呢,VO出五没问题没问题,好,那么这呢是咱们最初写的一个继承的方式,这个里边呢,是有现场安全问题的跑一下。嗯,好,最后呢,可能会出现这个叫重票和错票啊,这时候还挺给力的啊,每次运行都出来了,嗯,那有这个问题呢,现在咱们叫使用。
02:00
同步方法来处理继承thread类。哎的,这个方式中的线程安全问题。好使用通过方法来做了,跟刚才的类似,咱们呢,还是假设这一段完整的操作,共享数据的代码,嗯,咱们呢,CTRLX。放到我们的这个,呃,一个方法当中啊。哎,这个你写成个private也行,咱们在外边也不让他去掉了啊收一下。好在这呢,CTRLV拿过来也暂时呢,把我们这个else呢先给大家干掉啊。行,然后这个收房碗呢,需要在这调就在这调,那就写到这了,写到这以后暂时呢,肯定还是不安全的,哎,仿照咱们刚才说的这个实现的这个方式,是不是在这加个C啊好加完了,加完以后这时候安全吗?
03:02
不安全,你看这时候,你看这时候我们明显不安全的时候,这个速度要快嘛。你看那时候呢,就一个一个出来是吧,所以就能看出来这个安全以后呢,这个效率还是要影响一些的,这呢,我们看到这个叫负一了,说明呢,你这样处理完以后呢,是不对的啊啊,那究其原因是因为。所得问题。哎,说的问题就是咱们刚才在这个三里边,这说了说你这个同步监视器呢是Z,那这呢是不是也是Z啊,这呢也是Z,这个Z呢,当前对象咱们这里边有三个,对这个我就不写this了啊,就写成这个叫T1T2T3了,嗯,显然呢不行,那我现在还就想用同步方法了,怎么办?嗯,这个时候呢,我们只能考虑你把这个方法呢,写成是一个静态的方法类型静态了。
04:11
嗯,写成静态以后呢,这块报错了,因为呢,你这个方法不是静态的,咱们静态里边是不是只能调静态的是吧,得改一下呗,怎么改。这样不就行了吗?拿对象掉呗,啊这就可以了,嗯,那咱们过来,呃,先说这个啊,这是同步间是他,然后呢,这个嗯,这个。是此种啊,解决方式是错误的啊。啊,这个你要想保证用同步方法好使,我们必须保证我们这个收方法是一个静态的了,静态的方法我在这调没问题,因为非静态是可以调静态的,然后呢,这个时候呢,我们说就正确了。
05:02
哎,这个时候呢,就是一个正确的,那么大家呢,去想一下啊,说这时候是正确了,怎么去理解呢,这个我们得手动的关一下先啊。它既然正确了,你只能够说这时候的同步监视器是不是唯一的了,那这时候同步监视器是谁?对,这个同步监视器首先不能是这次,咱们说在静态里边是不是也不能掉这次啊,所以自动的它也不会是Z次,那不是Z次是谁对,就是当前的这个类,哎,还是他。那又因为你当前这个类呢是唯一的,所以说呢,哎这个呢,它就是安全的了。啊,这是这样子的。嗯,还是稍微有一点这个思维量在里边的啊成那么基于咱们刚才讲的这个同步方法,咱们呢,总结一下这个我就总结写到咱们这个实现的这里边了,写到这吧。
06:08
哎,关于。哎,这个叫同步方法的一个总结啊,哎,第一个点就是同步方法,这个仍然,哎这个涉及到啊,叫同步监视器。啊,仍然涉及到同步间隙啊,只是呢,不需要我们显示的声明。哎,相当于他使用的是这个默认的啊。只是呢,不需要我们显示的声明,这是第一个点,然后第二点我们关注的就是既然不需要显示声明了,那你默认的是谁啊,我们这里边也要说说呢,叫非静态的同步方法啊,它的同步监视器或者咱们叫锁也行啊,是这。
07:01
啊是这个这次啊就是当前对象,那么对于静态啊的同步方法,静态的同步方法,它的同步监视器啊,是这个当前类本身啊是这样。哎,是当前类本身。这个大家去注意一下啊,就是你知道这个同步天然器是谁了,你到底这样写能不能解决线程安全问题,大家你就再回归到咱们最初讲的,你这个这次是不是唯一,当前类是不是唯一就可以了啊,还跟咱们最初呢,说到的这块这个问题是一样的啊,共享数据和同步监视器是两个大家非常需要重点关注的概念,这两个概念呢,不管我们同步代码块中要涉及到同步方法呢,也会涉及到。啊也会涉及到,嗯,行这呢,就整个咱们就把这个关于使用S的啊同步代码块和同步方法的方式解决线程安全问题呢,就讲完了。
08:05
啊,大家呢,去体会一下,这里边儿呢,还是呃有一些难度,代码量上不大,但是呢,理解上呢,还是需要有一些这个这个这个难度的啊大家呢,需要下来去体会一下,然后自己呢,把这个代码呢写一写。
我来说两句