闭锁CountDownLatch

闭锁的作用相当于一扇门:在闭锁到达结束状态之前,这扇门一直是关闭的,任何线程都不能够通过,当闭锁到达结束状态时,才会允许线程通过。闭锁可以确保一些活动在另一些活动结束后才执行。

举个例子:运动会时百米赛跑,每位运动员都是一个线程,在起跑线出准备冲刺。但是信号枪不响,所有的运动员都要呆在起跑线上不动。直到信号枪打响的一瞬间,运动员才能开始赛跑。这个信号枪就是闭锁。不同的是,闭锁可以设置一个数量。比如有五个裁判,分别拿一把信号枪。每个裁判都要鸣枪,且五个裁判全部打响后,运动员才能发力。


public class CountDownLatchTest {

	public static void main(String[] args) {
		final CountDownLatch startGate = new CountDownLatch(1);

		for (int i = 0; i < 5; i++) {
			Thread t = new Thread() {
				@Override
				public void run() {
					try {
						startGate.await();// 预备
					} catch (InterruptedException e) {
						return;
					}
					System.out.println("开始执行" + Thread.currentThread().getName());
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					System.out.println("执行结束" + Thread.currentThread().getName());

				}
			};
			t.start();

		}

		System.out.println("所有线程准备就绪...");
		startGate.countDown();// 跑
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值