CountDownLatch、CyclicBarrier的使用(门栓)

简介: CountDownLatch、CyclicBarrier的使用(门栓)


CountDownLatch、CyclicBarrier用于执行完指定数量的线程后再执行一个最终线程。

示例如下:

public class T2 {

//CountDownLatch锁要先上锁执行await的线程后在执行后续线程
static CountDownLatch latch = new CountDownLatch(3);
//CyclicBarrier相比于上一个更加强大,在执行一定数量的await线程后,执行最后一个线程;

// static CyclicBarrier cb = new CyclicBarrier(3, () -> {
// System.out.println("人齐开饭!");
// });

public static void main(String[] args) {
    new Thread(() -> eat(6), "张三").start();
    new Thread(() -> eat(2), "李四").start();
    new Thread(() -> eat(7), "王五").start();
    //最后执行的线程
    new Thread(T2::starts).start();

}

//t为设置到场的时间
static void eat(int t) {
    //获取当前线程名称
    String na = Thread.currentThread().getName();
    System.out.printf("%s需要%d秒到达...%n", na, t);
    try {
        //睡眠t时间后继续
        TimeUnit.SECONDS.sleep(t);
        System.out.println(na + "已到达!");
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

// try {
// cb.await();
// } catch (InterruptedException e) {
// e.printStackTrace();
// } catch (BrokenBarrierException e) {
// e.printStackTrace();
// }

    //countDown()的线程为标记线程
    latch.countDown();
}

static void starts() {
    try {
        //await()睡眠状态,直到设置的线程数量执行完才唤醒
        latch.await();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println("人齐开饭");
}

}

目录
相关文章
|
5月前
CountDownLatch和CyclicBarrier你使用过吗?
CountDownLatch和CyclicBarrier你使用过吗?
38 0
|
5月前
CyclicBarrier 的使用
CyclicBarrier 的使用
26 2
|
5月前
|
Java
CountDownLatch的使用
CountDownLatch的使用
36 1
CountDownLatch 使用详解
本文主要对CountDownLatch 的相关知识点进行了介绍和讲解
109 1
CyclicBarrier 使用详解
本文主要对CyclicBarrier的相关知识点进行了介绍和讲解
149 0
CountDownLatch&CyclicBarrier&Semaphore
本文将介绍一下CountDownLatch 、 CyclicBarrier 、 Semaphore这几个控制线程的类。
 CountDownLatch&CyclicBarrier&Semaphore
CountDownLatch
CountDownLatch是从JDK1.5开始提供的一个辅助并发编程的一个类,它位于在JUC包中。 允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。
133 0
|
Java
CountDownLatch:别浪,等人齐再团!(2)
CountDownLatch:别浪,等人齐再团!(2)
98 0
CountDownLatch:别浪,等人齐再团!(2)
|
消息中间件
CountDownLatch&CyclicBarrier
CountDownLatch&CyclicBarrier
131 0
CountDownLatch&CyclicBarrier