gpt4 book ai didi

Java并发编程之栅栏(CyclicBarrier)实例介绍

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Java并发编程之栅栏(CyclicBarrier)实例介绍由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

栅栏类似闭锁,但是它们是有区别的. 。

1.闭锁用来等待事件,而栅栏用于等待其他线程.什么意思呢?就是说闭锁用来等待的事件就是countDown事件,只有该countDown事件执行后所有之前在等待的线程才有可能继续执行;而栅栏没有类似countDown事件控制线程的执行,只有线程的await方法能控制等待的线程执行. 。

2.CyclicBarrier强调的是n个线程,大家相互等待,只要有一个没完成,所有人都得等着.

场景分析:10个人去春游,规定达到一个地点后才能继续前行.代码如下 。

复制代码代码如下:

import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier,

  。

class CyclicBarrierWorker implements Runnable {     private int id;     private CyclicBarrier barrier,

    public CyclicBarrierWorker(int id, final CyclicBarrier barrier) {         this.id = id;         this.barrier = barrier;     } 。

    @Override     public void run() {         // TODO Auto-generated method stub         try {             System.out.println(id + " th people wait");             barrier.await(); // 大家等待最后一个线程到达         } catch (InterruptedException | BrokenBarrierException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }     } } 。

public class TestCyclicBarrier {     public static void main(String[] args) {         int num = 10;         CyclicBarrier barrier = new CyclicBarrier(num, new Runnable() {             @Override             public void run() {                 // TODO Auto-generated method stub                 System.out.println("go on together!");             }         });         for (int i = 1; i <= num; i++) {             new Thread(new CyclicBarrierWorker(i, barrier)).start();         }     } } 。

输出 。

复制代码代码如下:

1 th people wait
2 th people wait
3 th people wait
4 th people wait
5 th people wait
7 th people wait
8 th people wait
6 th people wait
9 th people wait
10 th people wait
go on together!
 

最后此篇关于Java并发编程之栅栏(CyclicBarrier)实例介绍的文章就讲到这里了,如果你想了解更多关于Java并发编程之栅栏(CyclicBarrier)实例介绍的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com