00:00
好,那接着的话呢,我们来说一下一个重要的问题,叫线程的同步,那线程同步呢,主要解决的就是线程的安全问题,嗯,那么咱们在前面讲这个售票的时候呢,其实也出现过这样的问题了,这个咱们在卖票的时候找一下咱们这个卖票的这个程序啊。卖票的时候我们把它跑起来,大家呢,当时我们写这个代码的时候,会发现有一些重票哈,这叫重票了,实际上呢,还可能会出现其他的问题,比如说呢,这个错票的问题,像这呢,都属于这个叫呃,县城的安全问题,那咱们现在呢,重点来解决的就是这个现场的安全问题啊,那我再重新举一个场景,这个是个卖票的啊,咱们在PPT里边呢,我这又写个场景,就是细微的去体会一下什么叫现成的安全问题,嗯呃,比如说呢,大家有一个账户,这个账户里边呢,有3000块钱。这呢就是你的这个账户,然后呢,现在比如说你呃,现在呢,这个拿着这个银行卡,现在呢,去这个银行里边想去取2000块钱,那很显然呢,你这个账户有3000,你想取2000是可以取成功的啊,那这里边儿有一个过程啊,就是呢,你先输入这2000以后这个呢,呃,银行这个系统呢,就会先判定一下,说你要取得2000,跟我们实际账户的这个3000来比较一下,发现呢,3000业务账户的这个余额大于2000啊,这呢首先是有一个if的判断,判断一下这个账户的余额是不是满足,然后满足呢是大于,大于以后呢,我们就进入这个大括号里边,开始呢,给你去这个3000去减2000,然后给你开始吐钞了。
01:37
嗯,这是这样一个过程,然后呢,这是一个过程,另外呢,还有一个,这是一个县城,这还是一个县程,就比如说你你媳妇儿啊,你要你要没媳妇儿呢,就是你女朋友啊,没有女朋友男朋友是吧,这就是他呢,现在这个在网上,比如说要买个东西,哎,关联的也是你这张银行卡。买的这个东西呢,恰好比如说也是2000块钱啊,然后呢,他去支付的那一瞬间啊,或者就支付那个过程啊,他也得是先判断一下支付的这个钱跟这个账户的余额是不是够啊,也会有相应的这个衣服的一个判断啊里边呢,就是如果够啊这块你就把这个钱给他花掉啊,然后这个东西呢,就购买成功了,那么现在呢,有一个比较极端的情况,就是呢,当你这块去取钱的时候呢,我刚判断完if是不是满足是处的时候呢,进去了,刚进去还没有去给你冲减吐钱的时候,哎,就在你这个位置,咱们说线程呢,刚才有一个状态叫阻侧。
02:37
那么刚进入这个衣服阻塞了,那这时候下边这个过程走不了,就在你停留的这个阻塞的时间之内呢,哎,你媳妇呢,也判断你判断呢,这时候呢,因为你下边也没有剪过,所以这时候衣服是不是也进去了,哎就也进去了,好然后这时候呢,即使你也醒了,那也不重要了,最终的效果就是说你在衣服里边,你会把这2000块钱呢减完,然后吐出来钱,他这块呢,呃,也会呢,减去这2000块钱,也会呢,给你支付成功,呃,最终呢,这个银行苦了是吧?啊你这个账户呢,明明是一个储蓄账户,最后呢,诶透支1000是吧?啊这就出问题了,把这种情况呢,咱们就称作叫现成的安全问题。
03:19
这叫线程的安全问题,咱们在前面讲这个继承,呃静态以后提到过单立模式,单立模式里边我们讲过,说这个哪一种模式是这个存在现场性问题的懒汉式,对懒汉式就是相当于咱们给这个,呃单立嘛,就只能造一个对象啊,在给这个对象赋值,造对象的时候呢,呃,你这个按说呢,只能扭一次了,呃我们当时讲的时候呢,就是如果要有多个线程,是会可能出现用过两次或者多次的,那呢也叫做线程的安全问题啊,也叫做线程的安全问题,首先呢,大家先明确明确一下什么叫线程的安全问题啊,那么在跳出来泛泛的说一下,我们在一个程序当中,如果写多个线程,一定会出现线程的安全问题吗?
04:13
是不一定的,那怎么去理解啊,就跟说,哎,我去取钱了,跟你去取钱了,咱俩相当于俩县城,咱俩会有安全问题吗?没有。没有啊,咱俩又没有什么关系,咱俩又不是一个账户,对吧?哎,就是你取你的钱,你是从你的银行卡里花钱,我从我的卡里花,或者夸张一点,咱俩交换一下也行是吧?啊,但是总不会说咱俩去操作一个账户啊,这个线程你做的是这个事儿,我这个线程呢,做的是这个事儿,他俩之间呢,就不会有安全问题,那现在安全问题之所以会出现,就是因为对我们有共享的数据了啊,就像这里边啊,如果你要用你的账户,你媳妇用你媳妇的其实也没事儿啊,关键呢,就是你俩用的是同一个账户,这里边这个3000这个账户就是共享数据,那操作这个共享数据的时候。
05:10
我们发现呢,当你这个呃,线程在操作的过程当中,还没操作完呢啊,另外的线程呢,这个因为大家都共享嘛,那咱们说了多个线程共享这个一个进程中的这个堆空间和方法区里边这些数据了,大家都共享,咱们都去操作了,这时候呢,就出问题了,这就存在这个安全的隐患啊,那咱们这一节重点呢,就是解决这个安全问题,我们称作叫做同步啊,通过同步呢来解决好,那么咱们这块呢,首先呢,来把这个问题通过咱们卖票这个事儿啊,大家先去理解一下,什么叫现程的一个安全问题啊,什么叫现场安全问题,然后呢,我们通过这个卖票这个程序呢,咱们这个把这个安全问题给它解决掉啊先这个停。
我来说两句