public class DistributedLockExample {
private CuratorFramework client;
private InterProcessMutex lock;
// ...
public void initialize(String connectionString, String lockPath) throws Exception {
client = CuratorFrameworkFactory.newClient(connectionString, new ExponentialBackoffRetry(1000, 3));
client.start();
lock = new InterProcessMutex(client, lockPath);
}
public void doWork() throws Exception {
if (lock.acquire(10, TimeUnit.SECONDS)) {
try {
System.out.println("Executing critical section...");
} finally {
lock.release();
}
} else {
System.out.println("Failed to acquire lock within given time.");
}
}
public void cleanup() {
client.close();
}
}