admin 管理员组

文章数量: 887021


2024年1月18日发(作者:mysql创建表单)

java 栅栏并发案例

在 Java 中,栅栏(barrier)常用于同步并发操作。栅栏是一种同步点,允许一组线程在继续执行之前等待其他线程完成。下面是一个简单的栅栏并发案例,通过使用 `CyclicBarrier` 类实现:

```java

import ;

import ;

public class BarrierExample {

public static void main(String[] args) {

// 创建一个 CyclicBarrier 实例,并设置屏障点数为 3

CyclicBarrier cyclicBarrier = new CyclicBarrier(3);

// 创建三个线程,每个线程都执行一个任务并等待其他线程完成

Thread thread1 = new Thread(() -> {

try {

("Thread 1 is waiting at the barrier.");

(); // 等待其他线程到达屏障点

("Thread 1 passed the barrier.");

} catch (InterruptedException BrokenBarrierException e) {

();

}

});

Thread thread2 = new Thread(() -> {

try {

("Thread 2 is waiting at the barrier.");

(); // 等待其他线程到达屏障点

("Thread 2 passed the barrier.");

} catch (InterruptedException BrokenBarrierException e) {

();

}

});

Thread thread3 = new Thread(() -> {

try {

("Thread 3 is waiting at the barrier.");

(); // 等待其他线程到达屏障点

("Thread 3 passed the barrier.");

} catch (InterruptedException BrokenBarrierException e) {

();

}

});

// 启动线程

();

();

();

}

}

```

在这个例子中,我们创建了一个 `CyclicBarrier` 实例,并将其设置为等待三个线程。然后,我们创建了三个线程,每个线程在到达屏障点之前都会输出一条消息,然后调用 `CyclicBarrier` 的 `await()` 方法等待其他线程到达屏障点。当所有线程都到达屏障点时,它们将同时继续执行。在这个例子中,输出结果如下:

```java

Thread 1 is waiting at the barrier.

Thread 2 is waiting at the barrier.

Thread 3 is waiting at the barrier.

Thread 1 passed the barrier.

Thread 2 passed the barrier.

Thread 3 passed the barrier.

```


本文标签: 线程 等待 屏障 到达