赞
踩
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.13</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-core</artifactId>
- <version>2.14.1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.zookeeper</groupId>
- <artifactId>zookeeper</artifactId>
- <version>3.5.7</version>
- </dependency>
- <dependency>
- <groupId>org.apache.curator</groupId>
- <artifactId>curator-framework</artifactId>
- <version>4.3.0</version>
- </dependency>
- <dependency>
- <groupId>org.apache.curator</groupId>
- <artifactId>curator-recipes</artifactId>
- <version>4.3.0</version>
- </dependency>
- <dependency>
- <groupId>org.apache.curator</groupId>
- <artifactId>curator-client</artifactId>
- <version>4.3.0</version>
- </dependency>
-
- </dependencies>
- public static void main(String[] args) {
- //创建分布式锁
- InterProcessMutex lock1 = new InterProcessMutex(getCuratorFramework(), "/locks");
-
- //创建分布式锁2
- InterProcessMutex lock2 = new InterProcessMutex(getCuratorFramework(), "/locks");
-
- //创建线程
- new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- //获取到锁
- lock1.acquire();
- System.out.println("线程1 获取到锁");
-
- lock1.acquire();
- System.out.println("线程1 再次获取锁");
-
- Thread.sleep(5*1000);
- lock1.release();
- System.out.println("线程1 释放锁");
- lock1.release();
- System.out.println("线程1 再次释放");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }).start();
-
- new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- //获取到锁
- lock2.acquire();
- System.out.println("线程2 获取到锁");
-
- lock2.acquire();
- System.out.println("线程2 再次获取锁");
-
- Thread.sleep(5*1000);
- lock2.release();
- System.out.println("线程2 释放锁");
- lock2.release();
- System.out.println("线程2 再次释放");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }).start();
- }
- public static CuratorFramework getCuratorFramework(){
- ExponentialBackoffRetry policy = new ExponentialBackoffRetry(3000, 3);
- CuratorFramework client = CuratorFrameworkFactory.builder().connectString("hadoop102:2181,hadoop103:2181,hadoop104:2181")
- .connectionTimeoutMs(2000)
- .sessionTimeoutMs(2000)
- .retryPolicy(policy).build();
- //创建客户端
- client.start();
- System.out.println("zookeeper 启动成功");
- return client;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。