java-CountDownLatch闭锁

本文介绍了一个灵活的闭锁实现——CountDownLatch,它允许一个或多个线程等待一系列事件的发生。文章详细展示了如何通过CountDownLatch来启动和停止线程,并解释了其核心组件如计数器的作用。

1、闭锁是一种synchronizer,它可以延迟线程的进度直到线程到达终止状态。

2、CountDownLatch是一个灵活的闭锁实现:

1) 允许一个或多个线程等待一个事件集的发生,闭锁的状态包括一个计数器,初始化为一个正数,用来实现需要等待的事件数。

2)countDown对计数器做减操作,表示一个事件已经发生了,而await方法等待计数器达到0,此时所有需要等待的事件都已经发生。

3)如果计数器的入口时值为非零,await会一直阻塞直到计数器为0,或等待线程中断及超时。

3、

使用CountDownLatch启动和停止线程

 

pulbic class TestHarness{
   public long timeTasks(intnThreads,final Runnable task) throws InterruptedException{

     finalCountDownLatch startGate=new CountDownLatch(1);

    final CountDownLatch endGate=new CountDOwnLatch(nThreads);

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

        THread t=new Thread(){

            publicvoid run(){

             try{

                startGate.await();

                try{

                     task.run();

                 }

                 finally

                 {

                    endGate.countDown();

                 }
               }catch(InterruptedException ignored){}

           } 
         };

        t.start();

    }

    long start=System.nanoTime();

     startGate.countDown() ;

    endGate.await();

    long end=System.nanoTime();

    return end-start;

   }

}

 

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值