FigSprite 2022-01-05 22:52 采纳率: 100%
浏览 25
已结题

并发编程的问题,关于CyclicBarrier

=

public class CyclicBarrierTest2 {
    static CyclicBarrier cyclicBarrier = new CyclicBarrier(2, new A());


    public static void main(String[] args) {
        new Thread(()->{
            try {
                cyclicBarrier.await();
            }catch (Exception e){
                
            }
            System.out.println(1);
        }).start();
        
        try{
            cyclicBarrier.await();
        }catch (Exception e){
            
        }
        System.out.println(2);
        
    }
    
    static class A implements Runnable {
        @Override
        public void run() {
            System.out.println("3");
        }
    }
}


《java并发编程艺术》上看到的,为什么这段代码输出一定是312?
3第一个输出没问题,但1和2不是应该随机顺序吗?

于是我好奇又加了一个线程

public class CyclicBarrierTest2 {
    static CyclicBarrier cyclicBarrier = new CyclicBarrier(3, new A());


    public static void main(String[] args) {
        new Thread(()->{
            try {
                cyclicBarrier.await();
            }catch (Exception e){
                
            }
            System.out.println(1);
        }).start();


        new Thread(()->{
            try {
                cyclicBarrier.await();
            }catch (Exception e){

            }
            System.out.println(4);
        }).start();

        try{
            cyclicBarrier.await();
        }catch (Exception e){
            
        }
        System.out.println(2);
        
    }
    
    static class A implements Runnable {
        @Override
        public void run() {
            System.out.println("3");
        }
    }
}


发现除了3是第一个输出,其他都是随机的,好奇怪= =

  • 写回答

3条回答 默认 最新

查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月22日
  • 已采纳回答 1月14日
  • 专家已采纳回答 1月9日
  • 创建了问题 1月5日

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同