您当前的位置: 首页 >  Java

小志的博客

暂无认证

  • 1浏览

    0关注

    1217博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java并发多线程编程——CyclicBarrier

小志的博客 发布时间:2022-01-06 21:32:05 ,浏览量:1

目录
    • 一、CyclicBarrier概述
    • 二、CyclicBarrier代码示例

一、CyclicBarrier概述
  • CyclicBarrier的字面意思是可循环(Cyclic) 使用的屏障(barrier)。
  • CyclicBarrier让一组线程到达一个屏障(也可以叫做同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。
  • 线程进入屏障通过CyclicBarrier的await()方法。
二、CyclicBarrier代码示例

模拟淘宝集齐5种福卡,坐等开奖案例

  • 代码

    import java.util.concurrent.BrokenBarrierException;
    import java.util.concurrent.CyclicBarrier;
    
    /**
     * @description: 模拟淘宝集齐5种福卡,坐等开奖案例
     * @author: xz
     */
    public class CyclicBarrierDemo {
        public static void main(String[] args) {
            collectCard();
        }
    
        private static void collectCard(){
            CyclicBarrier cyclicBarrier=new CyclicBarrier(5,()->{
                System.out.println("五种卡片已集齐,坐等开奖");
            });
            for (int i = 1; i {
                    System.out.println("线程"+Thread.currentThread().getName()+"\t 收集到第"+ temp +"种福卡");
                    try {
                        cyclicBarrier.await();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    } catch (BrokenBarrierException e) {
                        e.printStackTrace();
                    }
                },String.valueOf(i)).start();
            }
        }
    }
    
  • 输出结果如下图: 在这里插入图片描述

关注
打赏
1661269038
查看更多评论
立即登录/注册

微信扫码登录

0.0534s