基于Redisson的Redisson分布式闭锁(RCountDownLatch),跟 juc包下的CountDownLatch类的接口和用法相似;

模拟锁门,5个同学,全部离开教室后锁门

//锁门
@GetMapping("/lockDoor")
@ResponseBody
public String lockDoor() throws InterruptedException {
    RCountDownLatch door = redisson.getCountDownLatch("door");
    door.trySetCount(5);
    //等待闭锁完成
    door.await();
    return "锁门成功!";
}

//离开
@GetMapping("/leave/{id}")
@ResponseBody
public String leave(@PathVariable String id){
    RCountDownLatch door = redisson.getCountDownLatch("door");
    //计数-1
    door.countDown();
    return id+"同学离开了...";
}

测试

访问http://localhost:10002/lockDoor 接口,阻塞;

访问5次 http://localhost:10002/leave/1 接口,上一个接口锁门成功。


版权声明:本文为qq_33732195原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_33732195/article/details/111057997