多线程协作 CyclicBarrier 如何重复使用
需要汇总3次,各个小组长也要收集3次。
并且每次汇集后要等教师检查后才汇总下一次成绩
现在汇总一次的时候是可以的,用cyclcbarrier来控制,
但是汇总完毕后,如何开始下一次汇总呢?
我试着用cyclebarrier的reset等方法 都失败了。
下面是测试片段,Group是小组长,他负责收集和提交信息。
汇总完毕后打印一个“汇总和阅读完毕”
那么我如何保证在这之后,再开始一次汇总?
final CyclicBarrier barrier = new CyclicBarrier(count, new Runnable() {
public void run() {
System.out.println("汇总并阅读完毕!");
}
});
for (int i = 0; i < 3; i++) {
Thread t=new Thread(new Group(i, barrier));
t.start();
}
相关推荐
java多线程之CyclicBarrier的使用方法
主要介绍了java多线程之CyclicBarrier的使用方法的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
Java并发编程一CountDownLatch、CyclicBarrier、Semaphore初使用
Java并发编程一CountDownLatch、CyclicBarrier、Semaphore初使用 CountDownLatch、CyclicBarrier、Semaphore这些线程协作工具类是基于AQS的,看完这篇博客后可以去看下面这篇博客,了解它们是如何实现的。 Java并发之AQS详解 CountDownLatch CountDownLatch可以实现一个线程等待多个线程、多个线程等待一个线程、多个线程等待多个线程(这里不涉及)。 我们首先来看看怎么实现一个线程等待多个线程吧。 工厂中,对产品需要进行质检,5个工人进行检查,所有人都认为通过,这个产品才算通过。 代码: packag
详解java CountDownLatch和CyclicBarrier在内部实现和场景上的区别
主要介绍了详解java CountDownLatch和CyclicBarrier在内部实现和场景上的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Java多线程开发之CyclicBarrier
近研究了一个别人的源码,其中用到多个线程并行操作一个文件,并且在所有线程全部结束后才进行主线程后面的处理。 其用到java.util.concurrent.CyclicBarrier 这个类。 CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用,其相当于一个屏障,当一个线程跑到await()方法时,将挂起这个线程,等待直到其他线程同样跑这个await()方法。 int index = –c
CyclicBarrier用法.docx
CyclicBarrier是Java中的一个同步工具类,用于协调多个线程之间的同步。它的作用类似于CountDownLatch,可以让一个或多个线程等待其他线程执行完毕后再继续执行。 CyclicBarrier可以被看作是一个屏障,当所有线程都到达这个屏障时,所有线程才能继续执行。与CountDownLatch不同的是,CyclicBarrier可以重复使用,即当所有线程都到达屏障后,屏障会自动重置,可以继续使用。 CyclicBarrier的构造方法如下: java public CyclicBarrier(int parties, Runnable barrierAction) 其中,parties表示线程的数量,barrierAction是一个Runnable对象,在所有线程都到达屏障时执行。 CyclicBarrier的主要方法如下: await():让当前线程进入等待状态,直到所有线程都到达屏障。 await(long timeout, TimeUnit unit):让当前线程进入等待状态,直到所有线程都到达屏障或等待超时。 reset():重置屏障,使其可以继


Java SE
