CyclicBarrierDemo案例

CyclicBarrier 是 Java 并发包中的一个同步辅助工具,它的作用是在多个线程之间创建一个同步点,只有当所有线程都到达了这个同步点时,才能继续执行后续操作。下面是 CyclicBarrier 的一些关键作用:

  1. 协调多线程并发: CyclicBarrier 可以让多个线程在指定的同步点处等待,直到所有线程都到达同步点后才继续执行后续操作。这种机制特别适合需要所有参与线程都完成某阶段任务后才能继续的场景。

  2. 分阶段任务处理: 可以用于将任务分解为多个阶段,并规定所有线程必须在每个阶段结束后等待其他线程,以确保整个过程按照规定的顺序进行。

  3. 简化并发控制: 在某些复杂的并发场景中,CyclicBarrier 可以帮助简化线程之间的控制和协调,避免手动编写复杂的同步逻辑。

  4. 控制并发线程数: 可以限制并发执行的线程数量,当达到指定的线程数后,所有线程才开始同时执行。

  5. 提升性能: 在某些任务分解为多个子任务并行执行的场景下,CyclicBarrier 可以保证所有子任务完成后再汇总结果,从而提升整体性能。

在使用 CyclicBarrier 时,需要先创建一个实例,并指定需要同步等待的线程数量。每个线程通过调用 await() 方法告知 CyclicBarrier 它已经到达了同步点,当所有线程都调用了 await() 方法后,CyclicBarrier 将会释放所有线程继续执行后续操作。

下面举一个例子,关于运动员到操场集合

import java.util.concurrent.BrokenBarrierException; 
import java.util.concurrent.CyclicBarrier; 
public class CyclicBarrierDemo { 
	public static void main(String[] args) throws BrokenBarrierException, InterruptedException { 			      		
		CyclicBarrier cyclicBarrier = new CyclicBarrier(10,() -> { System.out.println("集合完		毕"); }); 
		for (int i = 0; i < 10; i++) { 
			new Thread(() -> { 
				System.out.println(Thread.currentThread().getName() + " : 报到"); 
				try { 
					cyclicBarrier.await(); 
				} catch (InterruptedException e) { 
					e.printStackTrace(); 
				} catch (BrokenBarrierException e) { 
					e.printStackTrace(); 
				} 
			}).start(); 
		} 
	} 
} 

感谢您的阅读!有任何疑问,欢迎联系我
714321862@qq.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小江小河点、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值