CountDownLatch的使用方法

CountDownLatch的使用方法

/**
CountDownLatch类是一个同步计数器(同步辅助类),构造时传入int参数,该参数就是计数器的初始值,每调用一次countDown()方法,计数器减1,
计数器大于0 时,await()方法会阻塞程序继续执行
CountDownLatch如其所写,是一个倒计数的锁存器,当计数减至0时触发特定的事件。利用这种特性,可以让主线程等待子线程的结束
*/

主要方法
 public CountDownLatch(int count);   // 构造方法参数指定了计数的次数
 public void countDown();  // 当前线程调用此方法,则计数减一
 public void await() throws InterruptedException   // 调用此方法会一直阻塞当前线程,直到计时器的值为0
package CountDownLatchTest;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class CountDownLatchDemoTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		CountDownLatch countDownLatch = new CountDownLatch(5);
		System.out.println("start...");
		try {
			ExecutorService eService = Executors.newFixedThreadPool(3);
			for(int i = 0 ; i < 5 ; i ++){
				eService.execute(new CountDownLatchDemoTest().new WorkRunnable(countDownLatch));	
			}
			countDownLatch.await(); // 这里开始阻塞,一直等到countDownLatch的值为0
		}
		catch (InterruptedException e) {
			e.printStackTrace();
			System.out.println(e.toString());
		}
		System.out.println("end...");
	}

	
	class WorkRunnable implements Runnable{
		
		CountDownLatch countDownLatch = null;
		
		public WorkRunnable(CountDownLatch countDownLatch) {
			this.countDownLatch = countDownLatch;
		}
		
		@Override
		public void run() {
			System.out.println("ThreadName = " + Thread.currentThread().getName());
			countDownLatch.countDown();  // countDownLatch的值减一
		}		
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值