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