CountDownLatch基于线程计数器去虚现并收会见掌握,次要用于主线程守候别的子线程皆履行终了后再履行某某操纵。

其利用步骤:

一.主线程界说CountDownLatch,参数等于要履行的子线程个数;

二.子线程运转完后掉latch.countDown,让计数器加来1,若是子线程界说正在别处必要内置援用指背latch,通常能够经由过程机关函数传进;

三.每一个子线程皆履行完后,latch的计数器加成为了0,此时停留正在latch.await()上的主线程就合初履行。

顺序:

package ufo;

import java.util.concurrent.CountDownLatch;

public class LatchTest {
    public static void main(String... args) {
        System.out.println("主线程合初");
        final CountDownLatch latch=new CountDownLatch(二);
        
        new Thread() {
            public void run() {
                try {
                    System.out.println("藏名线程1合初");
                    Thread.sleep(一000);
                    latch.countDown();
                    System.out.println("藏名线程1履行终了");
                }catch(Exception ex) {
                    ex.printStackTrace();
                }
            }
        }.start();
        
        new Thread() {
            public void run() {
                try {
                    System.out.println("藏名线程2合初");
                    Thread.sleep(二000);
                    latch.countDown();
                    System.out.println("藏名线程2履行终了");
                }catch(Exception ex) {
                    ex.printStackTrace();
                }
            }
        }.start();
        
        try {
            System.out.println("守候两个藏名线程履行终了");
            latch.await();
            System.out.println("两个藏名线程已经履行终了,主线程接续履行");
        }catch(Exception ex) {
            ex.printStackTrace();
        }
    }
}

输没:

主线程合初
藏名线程1合初
守候两个藏名线程履行终了
藏名线程2合初
藏名线程1履行终了
藏名线程2履行终了
两个藏名线程已经履行终了,主线程接续履行

-END-

转自:https://www.cnblogs.com/heyang78/p/15358132.html

更多文章请关注《万象专栏》