【从入门到放弃-ZooKeeper】ZooKeeper实战-分布式锁
前言 上文【从入门到放弃-ZooKeeper】ZooKeeper实战-分布式队列中,我们一起写了下如何通过ZooKeeper的持久性顺序节点实现一个分布式队列。本文我们来一起写一个ZooKeeper的实现的分布式锁。 设计 参考之前学习的【从入门到放弃-Java】并发编程-JUC-locks-ReentrantLock,实现java.util.concurrent.locks.Lock接口。我们通过重写接口中的方法实现一个可重入锁。 lock:请求锁,如果成功则直接返回,不成功则阻塞 直到获取锁。 lockInterruptibly:请求锁,如果失败则一直阻塞等待 直到获取锁或线程中断 tryLock:1、尝试获取锁,获取失败的话 直接返回false,不会再等待。2、尝试获取锁,获取成功返回true,否则一直请求,直到超时返回false unl