CountDownLatch使用说明

来源:互联网 发布:数据分析主管 编辑:程序博客网 时间:2024/04/29 18:54
//运行线程, 执行countDown()操作class CountDownThread implements Runnable{CountDownLatch count;public CountDownThread(CountDownLatch count){this.count = count;}public void run(){System.out.println("CountDownThread : "+this.toString() + " runing ...");try {Thread.sleep(3000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}count.countDown();System.out.println("CountDownThread : "+this.toString()+" finished ...");}}//等待线程class AwaitThread implements Runnable{CountDownLatch count;public AwaitThread(CountDownLatch count){this.count = count;}public void run(){System.out.println("AwaitThread : "+this.toString()+" await ...");try {this.count.await(2, TimeUnit.SECONDS);//等待两秒钟, 如果CountDownLatch没有countDown到0,自动唤醒} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("AwaitThread : "+this.toString()+"finished ...");}}public class CountDownLatchTest {public static void main(String [] args){CountDownLatch count = new CountDownLatch(3);for(int i=0; i<3; i++){new Thread(new CountDownThread(count)).start();}new Thread(new AwaitThread(count)).start();new Thread(new AwaitThread(count)).start();}}

0 0