分布式锁-Redisson-闭锁

闭锁(CountDownLatch):在要完成某些运算时,只有其它线程的运算全部运行完毕,当前运算才继续下去。

@GetMapping("/lockdoor")
@ResponseBody
public String lockDoor() throws InterruptedException {
    
    

    RCountDownLatch door = redisson.getCountDownLatch("door");
    door.trySetCount(5);//设置计数为5个
    door.await();//5个都走完了才会继续往下走
    return "都走完了";
}

@GetMapping("/gogogo/{id}")
@ResponseBody
public String gogogo(@PathVariable int id){
    
    

    RCountDownLatch door = redisson.getCountDownLatch("door");
    door.countDown();//每执行一次,锁-1(redis中的door去-1)
    return id+"号走了";
}

总结:countDown()被调用5次后,await才会不阻塞,会继续往下走。

猜你喜欢

转载自blog.csdn.net/qq_42969135/article/details/117043522