当前位置:   article > 正文

大数据技术之Zookeeper 分布式锁框架_分布式锁 框架

分布式锁 框架

1,导入所需相关jar包,采用maven方式

  1. <dependencies>
  2. <dependency>
  3. <groupId>junit</groupId>
  4. <artifactId>junit</artifactId>
  5. <version>4.12</version>
  6. <scope>compile</scope>
  7. </dependency>
  8. <dependency>
  9. <groupId>junit</groupId>
  10. <artifactId>junit</artifactId>
  11. <version>4.13</version>
  12. </dependency>
  13. <dependency>
  14. <groupId>org.apache.logging.log4j</groupId>
  15. <artifactId>log4j-core</artifactId>
  16. <version>2.14.1</version>
  17. </dependency>
  18. <dependency>
  19. <groupId>org.apache.zookeeper</groupId>
  20. <artifactId>zookeeper</artifactId>
  21. <version>3.5.7</version>
  22. </dependency>
  23. <dependency>
  24. <groupId>org.apache.curator</groupId>
  25. <artifactId>curator-framework</artifactId>
  26. <version>4.3.0</version>
  27. </dependency>
  28. <dependency>
  29. <groupId>org.apache.curator</groupId>
  30. <artifactId>curator-recipes</artifactId>
  31. <version>4.3.0</version>
  32. </dependency>
  33. <dependency>
  34. <groupId>org.apache.curator</groupId>
  35. <artifactId>curator-client</artifactId>
  36. <version>4.3.0</version>
  37. </dependency>
  38. </dependencies>

简易实现锁的分布式

  1. public static void main(String[] args) {
  2. //创建分布式锁
  3. InterProcessMutex lock1 = new InterProcessMutex(getCuratorFramework(), "/locks");
  4. //创建分布式锁2
  5. InterProcessMutex lock2 = new InterProcessMutex(getCuratorFramework(), "/locks");
  6. //创建线程
  7. new Thread(new Runnable() {
  8. @Override
  9. public void run() {
  10. try {
  11. //获取到锁
  12. lock1.acquire();
  13. System.out.println("线程1 获取到锁");
  14. lock1.acquire();
  15. System.out.println("线程1 再次获取锁");
  16. Thread.sleep(5*1000);
  17. lock1.release();
  18. System.out.println("线程1 释放锁");
  19. lock1.release();
  20. System.out.println("线程1 再次释放");
  21. } catch (Exception e) {
  22. e.printStackTrace();
  23. }
  24. }
  25. }).start();
  26. new Thread(new Runnable() {
  27. @Override
  28. public void run() {
  29. try {
  30. //获取到锁
  31. lock2.acquire();
  32. System.out.println("线程2 获取到锁");
  33. lock2.acquire();
  34. System.out.println("线程2 再次获取锁");
  35. Thread.sleep(5*1000);
  36. lock2.release();
  37. System.out.println("线程2 释放锁");
  38. lock2.release();
  39. System.out.println("线程2 再次释放");
  40. } catch (Exception e) {
  41. e.printStackTrace();
  42. }
  43. }
  44. }).start();
  45. }
  46. public static CuratorFramework getCuratorFramework(){
  47. ExponentialBackoffRetry policy = new ExponentialBackoffRetry(3000, 3);
  48. CuratorFramework client = CuratorFrameworkFactory.builder().connectString("hadoop102:2181,hadoop103:2181,hadoop104:2181")
  49. .connectionTimeoutMs(2000)
  50. .sessionTimeoutMs(2000)
  51. .retryPolicy(policy).build();
  52. //创建客户端
  53. client.start();
  54. System.out.println("zookeeper 启动成功");
  55. return client;
  56. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/710683
推荐阅读
相关标签
  

闽ICP备14008679号