手机
当前位置:查字典教程网 >编程开发 >Java >使用curator实现zookeeper锁服务的示例分享
使用curator实现zookeeper锁服务的示例分享
摘要:复制代码代码如下:importjava.util.concurrent.CountDownLatch;importjava.util.con...

复制代码 代码如下:

import java.util.concurrent.CountDownLatch;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.TimeUnit;

import com.netflix.curator.RetryPolicy;

import com.netflix.curator.framework.CuratorFramework;

import com.netflix.curator.framework.CuratorFrameworkFactory;

import com.netflix.curator.framework.recipes.locks.InterProcessMutex;

import com.netflix.curator.retry.ExponentialBackoffRetry;

public class TestCuratorLock {

/**

* @param args

* @throws InterruptedException

*/

public static void main(String[] args) throws InterruptedException {

// TODO Auto-generated method stub

CountDownLatch latch = new CountDownLatch(5);

String zookeeperConnectionString = "localhost:2181,localhost:2182,localhost:2183";

RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);

CuratorFramework client = CuratorFrameworkFactory.newClient(

zookeeperConnectionString, retryPolicy);

client.start();

System.out.println("客户端启动。。。。");

ExecutorService exec = Executors.newCachedThreadPool();

for (int i = 0; i < 5; i++) {

exec.submit(new MyLock("client" + i, client, latch));

}

exec.shutdown();

latch.await();

System.out.println("所有任务执行完毕");

client.close();

System.out.println("客户端关闭。。。。");

}

static class MyLock implements Runnable {

private String name;

private CuratorFramework client;

private CountDownLatch latch;

public MyLock(String name, CuratorFramework client, CountDownLatch latch) {

this.name = name;

this.client = client;

this.latch = latch;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public void run() {

// TODO Auto-generated method stub

InterProcessMutex lock = new InterProcessMutex(client,

"/test_group");

try {

if (lock.acquire(120, TimeUnit.SECONDS)) {

try {

// do some work inside of the critical section here

System.out.println("----------" + this.name

+ "获得资源----------");

System.out.println("----------" + this.name

+ "正在处理资源----------");

Thread.sleep(10 * 1000);

System.out.println("----------" + this.name

+ "资源使用完毕----------");

latch.countDown();

} finally {

lock.release();

System.out.println("----------" + this.name

+ "释放----------");

}

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

【使用curator实现zookeeper锁服务的示例分享】相关文章:

java解析xml之sax解析xml示例分享

简单的java socket客户端和服务端示例

Java排序实现的心得分享

简单的java读取文件示例分享

java nio基础使用示例

java解析xml之dom4j解析xml示例分享

java调用c程序通信示例代码

使用Enumeration和Iterator遍历集合类详解

JAVA实现多线程的两种方法实例分享

java使用jdbc链接Oracle示例类分享

精品推荐
分类导航