zoukankan      html  css  js  c++  java
  • ReentrantLock简单实现2

    ReentrantLock:

      

     1 /**
     2  *    ReentrantLock测试逻辑类
     3  */
     4 public class MyService {
     5     private Lock lock = new ReentrantLock();//获取锁对象
     6     
     7     public void methodA() {
     8         try {
     9             lock.lock();
    10             System.out.println("methodA:----begin" + Thread.currentThread().getName() + "----" + System.currentTimeMillis());
    11             Thread.sleep(2000);
    12             System.out.println("methodA:----end" + Thread.currentThread().getName() + "----" + System.currentTimeMillis());
    13         } catch (InterruptedException e) {
    14             e.printStackTrace();
    15         }finally {
    16             lock.unlock();
    17         }
    18     }
    19     
    20     public void methodB() {
    21         try {
    22             lock.lock();
    23             System.out.println("methodB:----begin" + Thread.currentThread().getName() + "----" + System.currentTimeMillis());
    24             Thread.sleep(2000);
    25             System.out.println("methodB:----end" + Thread.currentThread().getName() + "----" + System.currentTimeMillis());
    26         } catch (InterruptedException e) {
    27             e.printStackTrace();
    28         }finally {
    29             lock.unlock();
    30         }
    31     }
    32 }
     1 /**
     2  *    线程A
     3  */
     4 public class ThreadA extends Thread {
     5     
     6     private MyService service;
     7     
     8     public ThreadA(MyService service) {
     9         this.service = service;
    10     }
    11     
    12     @Override
    13     public void run() {
    14         service.methodA();
    15     }
    16 }
     1 /**
     2  *    线程AA
     3  */
     4 public class ThreadAA extends Thread {
     5     
     6     private MyService service;
     7     
     8     public ThreadAA(MyService service) {
     9         this.service = service;
    10     }
    11     
    12     @Override
    13     public void run() {
    14         service.methodA();
    15     }
    16 }
     1 /**
     2  *    线程B
     3  */
     4 public class ThreadB extends Thread {
     5     
     6     private MyService service;
     7     
     8     public ThreadB(MyService service) {
     9         this.service = service;
    10     }
    11     
    12     @Override
    13     public void run() {
    14         service.methodB();
    15     }
    16 }
     1 /**
     2  *    线程BB
     3  */
     4 public class ThreadBB extends Thread {
     5     
     6     private MyService service;
     7     
     8     public ThreadBB(MyService service) {
     9         this.service = service;
    10     }
    11     
    12     @Override
    13     public void run() {
    14         service.methodB();
    15     }
    16 }
     1 /**
     2  *    测试类
     3  */
     4 public class Run {
     5 
     6     public static void main(String[] args) {
     7         MyService service = new MyService();
     8         
     9         ThreadA a = new ThreadA(service);
    10         a.setName("A");
    11         a.start();
    12         ThreadAA aa = new ThreadAA(service);
    13         aa.setName("AA");
    14         aa.start();
    15 
    16         ThreadB b = new ThreadB(service);
    17         b.setName("B");
    18         b.start();
    19         ThreadBB bb = new ThreadBB(service);
    20         bb.setName("BB");
    21         bb.start();
    22     }
    23 }

    运行结果如下:

      

  • 相关阅读:
    vue-fullcalendar插件
    iframe 父框架调用子框架的函数
    关于调试的一点感想
    hdfs 删除和新增节点
    hadoop yarn 实战错误汇总
    Ganglia 安装 No package 'ck' found
    storm on yarn(CDH5) 部署笔记
    spark on yarn 安装笔记
    storm on yarn安装时 提交到yarn失败 failed
    yarn storm spark
  • 原文地址:https://www.cnblogs.com/wang1001/p/9566640.html
Copyright © 2011-2022 走看看