package com.bjsxt.height.concurrent019; import java.util.concurrent.CountDownLatch; /** * CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。 * 比如有一个任务A, * 它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了 * */ public class UseCountDownLatch { public static void main(String[] args) { final CountDownLatch countDown = new CountDownLatch(2);//参数 表示几个countDown(); Thread t1 = new Thread(new Runnable() { @Override public void run() { try { System.out.println("进入线程t1" + "等待其他线程处理完成..."); countDown.await();//在这里堵塞,等待其他线程执行完后,才能往下执行 System.out.println("t1线程继续执行..."); } catch (InterruptedException e) { e.printStackTrace(); } } },"t1"); Thread t2 = new Thread(new Runnable() { @Override public void run() { try { System.out.println("t2线程进行初始化操作..."); Thread.sleep(3000); System.out.println("t2线程初始化完毕,通知t1线程继续..."); countDown.countDown();//执行完,通知 } catch (InterruptedException e) { e.printStackTrace(); } } }); Thread t3 = new Thread(new Runnable() { @Override public void run() { try { System.out.println("t3线程进行初始化操作..."); Thread.sleep(4000); System.out.println("t3线程初始化完毕,通知t1线程继续..."); countDown.countDown();//执行完,通知 } catch (InterruptedException e) { e.printStackTrace(); } } }); t1.start(); t2.start(); t3.start(); } }
Java.util.Concurrent.CountDownLatch
猜你喜欢
转载自barabbas.iteye.com/blog/2419399
今日推荐
周排行