7.4J.U.C值AQS-CyclicBarrier
使用场景
示例代码
package com.moluo.concurrency.aqs;
import java.util.concurrent.*;
public class CyclicBarrierExample {
private static final int THREAD_COUNT =20;
private static CyclicBarrier cyclicBarrier=new CyclicBarrier(5);
public static void main(String[] args) throws InterruptedException {
ExecutorService executorService= Executors.newCachedThreadPool();
for (int i=0;i<THREAD_COUNT;i++){
final int index=i;
executorService.execute(()->{
try {
test(index);
} catch (Exception e) {
e.printStackTrace();
}
});
}
System.out.println("finish");
executorService.shutdown();
}
private static void test(int threadNum) throws InterruptedException, BrokenBarrierException {
Thread.sleep(1000);
System.out.println(threadNum+" is ready");
cyclicBarrier.await();
System.out.println(threadNum + " continue");
}
}总结
扩展
Last updated