dinux 2014-03-03
Curator 提供的分布式锁用法,很简单:
package curator.lock; 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; public class InterProcessMutexDemo { public static void main(String[] args) { RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3); final CuratorFramework client = CuratorFrameworkFactory.builder().connectString("127.0.0.1:2181").sessionTimeoutMs(5000).connectionTimeoutMs(10000).retryPolicy(retryPolicy).namespace("text").build(); client.start(); InterProcessMutex lock = new InterProcessMutex(client,"/lock"); try { lock.acquire(); System.err.println("生成订单号"); Thread.currentThread().sleep(5000L); } catch (Exception e) { } finally { try { lock.release(); } catch (Exception e) { e.printStackTrace(); } } try { lock.acquire(); System.err.println("生成订单号"); Thread.currentThread().sleep(Long.MAX_VALUE); } catch (Exception e) { } finally { try { lock.release(); } catch (Exception e) { e.printStackTrace(); } } } }