00:00
好,代码我们写完了,我们来测试一下啊,写一个测试的类。呃,测试的话呢。啊,我就不爱起这个名字哈,那就是他。起名字,起名字是最难的。啊,那就是分布式锁的一个测试。然后may方法,那怎么测呢,首先呢,我们创建两个啊,两个lo有两个客户端,那就是另外一个。Diss。去给他可以吧,点。拿到它,拿到它之后呢。这个前边啊。大家会说。好下异常。然后这搜一下啊。好,那下面我们再来一个哈。那这个锁呢,叫lock。一把第一把手。那下把锁再来一个。二。那两个客户端都要创建锁对吧,那创建锁那就new一个。
01:06
Red OK吧,啊,你有一个啊red进来进来之后呢,直接把它给它启动啊。加20袋。那在这里面我们要干什么事情呢?首先创呃,让它进行一个加速。加锁就是创建节点呗。这可到对吧,嗯,他去启动,然后这里面打印一下,说这啊说线程一。启动。然后获取到手。对吧,哎,不需要说,然后呢,我加一个延迟right.sleep我延迟一会五。唱一个1000,我延迟这么多秒。二加灰车我看一下。把它拿下来。现在啊,相当于这个线程一,它获取到了数。之后我让它释放掉点。对吧,哎,这是释放数。
02:01
那我再打印一下system out。建成一。这个释放。释放锁吧,啊,直接释放锁。对吧,啊,一个是过去数延迟一会儿,然后释放啊,这是一个线程,那我再来一个线程。现在呢,我把这个LOG1啊变成了二。然后呢,老婆老婆。那大家捋一下这代码啊,我这是同时用了两个线程,然后将它star对吧,中间是有延迟的,那在这个延迟时间内是它启动,它也启动了,比如说同一时间有LOG1和LOG22个线程来获取到这把锁。啊,他能不能谁能获取到呢?那是不是优先级报个一先获取到啊。对吧?哎,他获取完之后,那么LOG2得等这个LOG1释放掉之后,他才能拿到这把手,这能理解吗。啊,也就是说你这是一块资源啊,这个一先抢占了,把这资源锁起来了。
03:05
加上锁,那你这个二呢,再想访问的时候,对不起,防不了,直到这个一结束,把这个锁释放掉,那这个二才能进来,然后同时他也会把这个资料啊加一把锁。那我看一下是不是这样的效果。那执行的时候看到什么样的效果就OK呢?那就是一先获取到数,然后这个二呢,等待。等待说这个一释放掉之后,那他这边说获取到说然后释放。好,这些代码写完之后呢,接下来我们来测试一下哈,啊运行。看看能不能一变成啊。呃,这里面抛了说这个路径啊,Must start with这个chart啊,那么来看一下是什么情况啊。点它之后啊,你这里面是变量,但是你变量前面加上这个引号,就这不行啊,来把它拿下。是吧,哎,那我们再来执行一下啊,回来。
04:00
回到这里面,然后执行。呃,线程二启动啊,因为这俩线程啊,都是放在主线程里面啊,谁都有可能先启动对吧?啊,然后获取到锁之后释放锁。嗯,但是这个一是不是始终没有获取到啊,那说明我们代码是不是写的有点问题啊,那我们来看一下,看代码到底有啥问题。嗯,来这里面,嗯,这里面是二是没问题,启动了也释放了,但是呢,一。没起来。没起来,应该是你监听出了问题,嗯。监听。是监听监听,然后回调,然后往上走,看一下这块的处理process类型,嗯,然后是删除节点。Get类型啊,这块不对。这块呢,应该是get这个pass对吧,哎,获取你这个事件这个路径是否跟前一个路径相等,这才OK啊。我们再来试一下,看看还有没有其他问题。
05:00
呃,代码呢,就是不断的在调试。执行线程二、启动获取到锁。他先启动了,启动之后呢二,哎,释放锁一是不是就启动了,哎先成一就启动了,哎,然后线成一是不是释放锁啊,OK,那么再来执行一下,看看效果啊,再来一下。线程二启动,不知道数,每次都线程二呢。嗯,然后二释放,然后一,那就是说同一时间不会有两个线程获取到锁吧,是这样吧,哎,只有另一个锁释放之后才能够正常的工作。
我来说两句