package com.itstyle.seckill.distributedlock.zookeeper; import org.apache.curator.RetryPolicy; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFrameworkFactory; import org.apache.curator.framework.recipes.locks.InterProcessMutex; import org.apache.curator.retry.ExponentialBackoffRetry; import org.springframework.beans.factory.annotation.Value; /** * zookeeper 分布式锁 * @author 科帮网 By https://blog.52itstyle.com */ public class ZkLockUtil{ @Value("${zookeeper.address}") private static String address; public static CuratorFramework client; static{ RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3); client = CuratorFrameworkFactory.newClient(address, retryPolicy); client.start(); } //获得了锁 public static void acquire(String lockKey){ try { InterProcessMutex mutex = new InterProcessMutex(client, "/curator/lock/"+lockKey); mutex.acquire(); } catch (Exception e) { e.printStackTrace(); } } //释放锁 public static void release(String lockKey){ try { InterProcessMutex mutex = new InterProcessMutex(client, "/curator/lock/"+lockKey); mutex.release(); } catch (Exception e) { e.printStackTrace(); } } }