import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.recipes.locks.InterProcessMutex;
import org.apache.curator.retry.ExponentialBackoffRetry;
public class DistributedLockExample {
private static final String ZOOKEEPER_CONNECTION_STRING = "localhost:2181";
private static final String LOCK_PATH = "/locks/distributed_lock";
private static final int MAX_RETRY = 3;
private static final int RETRY_INTERVAL = 1000;
public static void main(String[] args) throws Exception {
CuratorFramework client = CuratorFrameworkFactory.newClient(ZOOKEEPER_CONNECTION_STRING, new ExponentialBackoffRetry(RETRY_INTERVAL, MAX_RETRY));
client.start();
InterProcessMutex lock = new InterProcessMutex(client, LOCK_PATH);
if (lock.acquire(5, TimeUnit.SECONDS)) {
try {
Thread.sleep(5000);
} finally {
lock.release();
}
}
client.close();
}
}