java 闭锁

闭锁1

定义: 在闭锁到达结束状态之前,这扇们一直是关闭的,并且没有线程能通过,当到达结束状态时,这扇门会打开并允许所有的线程通过。

 

举例:计算n个人比赛跑步。

比赛跑步要保证n个人是同步听见枪响。

 

    public long runSample(int n, final Runnable runSport) throws InterruptedException {
        final CountDownLatch gun = new CountDownLatch(1);
        final CountDownLatch end = new CountDownLatch(n);
        
        for (int i = 0; i < n; i++){
            Thread t = new Thread() {
                public void run(){
                    try{
                    gun.await();//等待开枪
                    try{
                    runSport.run();
                    }finally{
                        end.countDown();
                    }
                    }catch( InterruptedException e){
                        Thread.currentThread().interrupt();
                    }
                }
            };
            t.start();
        }
        long startTime = System.nanoTime();
        gun.countDown();//开枪
        end.await();
        long endTime = System.nanoTime();
        return endTime - startTime;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值