00:00
好,各位同学,我们继续那么。终于走到了我们的9.0版,OK,那么刚才我们压了一次以后通过对我们red。这样的look,按look这样的方法,我们貌似是不是解决了我们的超慢这样的一种问题,比我们之前自己写的要好很多,那么这个时候呢,我们呢,清空了后台的记录啊刚才。我们呢,再压一次试试,那么现在我先把我们的数据再恢复成100,好,如法炮制,再执行一次,我们来来看看。走起,那么同学们请看,马上就压完了,我们看一下我们的后台啊,或者说我们先来看一下我们的数据,GOODS001,同学们请看,100个商品拿走了吧,好的。先看我们的二号基站。13579。大家一眼是不是几乎都是基数打到这儿了,对吧?135791357913579,那么自然而然我们可以看得出二号机全是。
01:08
这样的一个结果。那么。一号机是不是02468024680246802468OK,相当和谐吧,基偶分派,那么现在是不是用我们的red lock是不是就彻底解决了我们的超卖种问题和现象啊?那么。大家再最后看一眼,你觉得就这样而眼。O,不OK,我暂停,请大家思考,那请听我说。到这儿,基本上一般中小厂的常见用法也就是这样了。但是呢,虽然说他没有错啊。但是这儿我们要注意一个细节,到目前为止,基本上超卖这个问题已经解决了,Red sun这样的lock可以控制住,但是目前我们为了保证我们在高并发下面的系统绝对的净健壮。
02:03
或者说尽量的见状,不敢说绝对哈,那么我们在写法上还是要注意一些严谨和完善的地方。问题呢,有这么个情况。在我们的安洛克这。好,那么同学们,我们在这儿呢?请注意,请不要这样直不楞登的直接写安洛克,虽然说现在我们压了,明显感觉到没有什么超卖的这这样的数据错误的现象了,但是这么写也语法上也没有错,右边也没有报红色的语法提示啊,但是这么写还不够尽善尽美,请同学们再完善一步,那我们要干件什么事呢?或者说如果我们不这么干。那杨哥,我现在就是想按洛解锁直不能登的,就跟我们的可重入锁re enter lock一样,洛按洛这不用着挺挺简单吗?简单直接明了他干嘛呀?不好意思啊。在我这样的一种环境。他很少会出现让你意想不到的事儿,但是正儿八经上生产,你可能会碰上从9.0~9.1这样的一种情况。那么就是。
03:08
他会报,如果在更大的高并发下面,你纯粹就是我们这儿的lock。安诺克有可能执行1万次。前9999次啊,都不会出故障。可能偶尔有一次啊,你会报这样的一个错误,在超高并发的前提下。尝试着去解锁,但是目前不能够解锁被当前的线程,什么意思?就是有可能当前线程和解锁的那个线程不是同一个汇报这样的一个异常,不合法的模状态的异常,那么问题是出在哪呢?出在我们这的安洛克,那么在这块要怎么做呢?希望同学们日后工作中。我个人建议,从我的经验来说,不允许直接这么直不楞登的写一个按落考,如果可以的话呢,请同学们再完善一下,加个判断,If red look,第二,Is the。
04:05
Look的假设它确实是还在锁定状态。然后如果。Ready上落点ISA hold by current thread是这个线程所持有的话,那么再请同学们再把它来进行一下修改,这样的判断就可以避免后续这个隐含的麻烦。解锁的话,如果不是同一个,并且锁的状态已经不持有等等,就会报这么一个不合法的模的状态和异常,为了杜绝这种现象,请同学们加一步,OK,那么只有这样,那么请同学们呢,才能够把我们的程序呢写的更严谨一些,不管是你这么写啊,或者说是你干脆呢。直接把它拿过来啊,你把它写成一行也好,这个呢由的你,但是呢,请同学们呢,一定要加这么一个判断,这样我们的程序才能够更加严谨一些,OK哈,一般你就是直接按lo red框架已经做的非常不错了,很少出事,但是我就怕一出事儿就给你捅个篓子,对吧?我们呢,尽量把它用好点,请加这么一个判断,怎么个写递进的写法是一行随你,但是呢,我们严谨一点,有点类似于哈,我们之间是不是也是像就像GDBC一样一副connection不等于那的话,OK,我们是不是还connection点。
05:27
Close才会去多这么一个判断,哎,类似的,好,那么同学们这请大家注意,最终啊,弟兄们请弄成什么9.1版以后啊,加这么一个判断,进一步完善我们的安lo克这个方法,建议不要这么直,不能登,你用,那么这样的话程序间证性会好一些,好,那么这个请同学们。熟记,并做一个参考。
我来说两句