package test; import java.util.concurrent.CountDownLatch; /**** * A线程等待 其他N个线程执行完 * 即: A线程 调用 await() * 其他线程调用完 执行 countDown() * * 都计数完毕之后,A线程开始执行 */ public class CountDownLatchTest { CountDownLatch countDownLatch = new CountDownLatch(1); public void test(){ System.out.println(Thread.currentThread().getName()+"进入方法"); System.out.println( Thread.currentThread().getName()+"完毕"); } public static void main(String[] args) { final CountDownLatchTest test = new CountDownLatchTest(); Thread thread3 = new Thread(new Runnable() { public void run() { try { test.countDownLatch.await(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Thread 3 进入等待"); test.test(); } }); thread3.start(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Thread thread = new Thread(new Runnable() { public void run() { test.test(); test.countDownLatch.countDown(); } }); Thread thread1 = new Thread(new Runnable() { public void run() { test.test(); test.countDownLatch.countDown(); } }); System.out.println("启动"); thread.start(); System.out.println("等待"); try { Thread.currentThread().sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("等待结束"); thread1.start(); try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("程序运行结束"); } }
java countlatchdown
最新推荐文章于 2024-07-13 03:14:06 发布