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.
```
版权声明:本文标题:java 栅栏并发案例 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1705563217h490102.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论