手机
当前位置:查字典教程网 >编程开发 >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使用jdbc链接Oracle示例类分享

用Java实现希尔排序的示例

java使用rmi传输大文件示例分享

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

字符串desede 3des加密示例分享

怎么运行用记事本写的java程序

java实现人民币大小写转换方法分享

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

探讨:使用httpClient在客户端与服务器端传输对象参数的详解

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

精品推荐
分类导航