CountDownLatch、CyclicBarrier的使用(门栓)

编程入门 行业动态 更新时间:2024-10-05 07:18:36

<a href=https://www.elefans.com/category/jswz/34/1766765.html style=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("人齐开饭");}
}

更多推荐

CountDownLatch、CyclicBarrier的使用(门栓)

本文发布于:2024-02-27 22:15:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1766798.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:CountDownLatch   CyclicBarrier   门栓

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!