有时候有这样的需求,需要多个线程执行任务,每个线程都执行不同的准备工作,全部准备好了,才能同时执行下面的工作。这个怎么实现呢?
一是用CyclicBarrier (适用在多线程相互等待,直到到达一个屏障点。并且CyclicBarrier是可重用的。)实现。
代码实现:
public class CyclicBarrierTest {
boolean finalFlg = false;
/**
* CyclicBarrier 适用再多线程相互等待,直到到达一个屏障点。并且CyclicBarrier是可重用的。
*/
CyclicBarrier cyclicBarrier = new CyclicBarrier(10);
private void runThread() {
ExecutorService executorService = Executors.newFixedThreadPool(10);
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
executorService.submit(createThread(i));
}
}
private Thread createThread(int i) {
Thread thread = new Thread(new Runnab