• Java中类似C#中Task.wait()的类CountDownLatch


    当主线程开辟多个子线程,而又需要这些子线程都执行完成后再执行主线程后续的操作,在C#中可以通过Task的wait方法来实现,然而在Java中也有类型的类CountDownLatch,具体用法如下:

    public static void main(String[] args) throws InterruptedException {        
        CountDownLatch latch = new CountDownLatch(3);
        for (int i = 0; i < 3; i++) {
            Thread t = new Thread() {
                public void run() {
                    try {
                        Thread.sleep(2000);//暂停2秒
                        System.out.println("线程:"+this.getId()+"完成");
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    latch.countDown();
                }
            };
            t.start();
        }
                
        System.out.println("等待3个线程完成");
        latch.await();//线程挂起,等待3个线程都执行完后再执行下面的内容
        System.out.println("3个线程都已完成");
    }

    首先我们需要定义总共的线程数并实现CountDownLatch类,每个线程执行完毕后都要执行countDown方法,相当于把总线程数减一。当latch.await()检测到线程数为0的时候就执行后续的相关方法。

  • 相关阅读:
    update condition 字段报错
    Xshell连接Linux服务器总掉线
    sleep php函数
    ubuntu 16.04 镜像下载
    多线程Parallel和Task
    AngularJS 时间格式化
    正则表达式
    手机抓包
    内存泄漏
    字符集编码和排列规则
  • 原文地址:https://www.cnblogs.com/duanjt/p/9259015.html
Copyright © 2020-2023  润新知