CountDownLatchDemo.java
本例描述的是over线程等待两个work线程结果后发出over消息
package com.ccy.thread.demo; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; /** * * <p> * Title: CountDownLatchDemo.java * Package com.ccy.thread.demo * </p> * <p> * Description: 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 本例描述的是over线程等待两个work线程结果后发出over消息 * * <p> * @author Tom.Cai * @created 2015-12-27 下午2:53:07 * @version V1.0 * */ public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { final CountDownLatch doneSignal = new CountDownLatch(2); new Thread(new Work(doneSignal)).start(); new Thread(new Work(doneSignal)).start(); new Thread(new Over(doneSignal)).start(); } } class Work implements Runnable { private CountDownLatch doneSignal; Work(CountDownLatch doneSignal) { this.doneSignal = doneSignal; } @Override public void run() { try { TimeUnit.SECONDS.sleep(2); System.out.println(Thread.currentThread().getName()+"done..."); } catch (Exception e) { e.printStackTrace(); }finally{ doneSignal.countDown(); } } } class Over implements Runnable { private CountDownLatch doneSignal; Over(CountDownLatch doneSignal) { this.doneSignal = doneSignal; } @Override public void run() { try { doneSignal.await(); System.out.println("over..."); } catch (Exception e) { e.printStackTrace(); }finally{ } } }
结果:
更多多线程精彩内容请继续关注我的博客:http://blog.csdn.net/caicongyang
记录与分享,你我共成长 -from
caicongyang