首页 > 科技 >

🇨🇳 CyclicBarrier用法 🔄

发布时间:2025-03-01 13:39:22来源:

在Java并发编程中,有时候我们需要让多个线程等待,直到所有线程都到达一个特定的点,然后继续执行。这时,我们可以使用`CyclicBarrier`类来实现。它就像是一个门闩,所有线程都需要到达这个门闩前,门才会打开,所有线程才能继续执行。和其他屏障不同的是,`CyclicBarrier`可以重用。

首先,我们需要创建一个`CyclicBarrier`对象,并指定需要多少个线程到达这个屏障。例如,如果我们有5个线程,我们就可以这样创建:

```java

CyclicBarrier barrier = new CyclicBarrier(5);

```

接着,在每个线程中,我们需要调用`barrier.await()`方法来表示当前线程已经到达了屏障。如果所有线程都已经到达,那么`await()`方法将会返回,并且所有的线程都会继续执行。如果在等待过程中有线程被中断,那么会抛出`InterruptedException`异常。如果有一个线程在`await()`方法中等待时超时,那么会抛出`BrokenBarrierException`异常。

```java

new Thread(() -> {

// 线程的工作...

try {

barrier.await();

} catch (InterruptedException | BrokenBarrierException e) {

e.printStackTrace();

}

}).start();

```

`CyclicBarrier`还可以接受一个`Runnable`参数,当所有线程到达屏障时,这个`Runnable`会被执行。这可以用于完成一些共享的工作,比如统计结果等。

免责声明:本答案或内容为用户上传,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 如遇侵权请及时联系本站删除。