CountDownLatch监听初始化

来源:互联网 发布:软件著作权申请加急 编辑:程序博客网 时间:2024/05/20 07:18
/** * CountDownLatch 经常用于监听某些初始化操作 等初始化完成执行以后 通知主线程继续工作 * @author admin * */public class UseCountDownLatch {    public static void main(String[] args) {        final CountDownLatch countDown = new CountDownLatch(2);//2表示需要监听的线程数量        Thread t1 = new Thread(new Runnable(){            public void run(){                try{                    System.out.println("进入线程t1" + "等待其他线程处理完成...");                    countDown.await();                    System.out.println("t1线程继续执行...");                }catch(Exception e){                    e.printStackTrace();                }            }        },"t1");        Thread t2 = new Thread(new Runnable() {            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() {            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();    }}
进入线程t1等待其他线程处理完成...t3线程进行初始化操作...t2线程进行初始化操作...t2线程初始化完毕,通知t1线程继续...t3线程初始化完毕,通知t1线程继续...t1线程继续执行...