1.引入依赖
org.apache.zookeeper
zookeeper
3.5.7
org.apache.curator
curator-framework
4.3.0
org.apache.curator
curator-recipes
4.3.0
org.apache.curator
curator-client
4.3.0
2.获取连接实例方法
public static Curatorframework getCuratorframework(){
//创建连接实例
Curatorframework client = CuratorframeworkFactory.builder().connectString("ZK地址:2182")
.connectionTimeoutMs(50000)
.sessionTimeoutMs(50000)
.retryPolicy(new ExponentialBackoffRetry(50000,3)).build();
client.start();
System.out.println("zookeeper 客户端启动成功了");
return client;
}
3.使用
public static void main(String[] args) {
// 创建分布式锁1
InterProcessMutex lock1 = new InterProcessMutex(getCuratorframework(), "/locks");
// 创建分布式锁2
InterProcessMutex lock2 = new InterProcessMutex(getCuratorframework(), "/locks");
new Thread(new Runnable() {
@Override
public void run() {
try {
//获取锁
lock1.acquire();
System.out.println("线程1 获取到锁");
Thread.sleep(5000);
//释放锁
lock1.release();
System.out.println("线程1 释放锁");
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
try {
//获取锁
lock2.acquire();
System.out.println("线程2 获取到锁");
Thread.sleep(5000);
//释放锁
lock2.release();
System.out.println("线程2 释放锁");
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
4.测试
线程2 获取到锁 线程2 释放锁 线程1 获取到锁 线程1 释放锁



