package com.example.app;
import java.util.Random;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
import java.util.stream.IntStream;
public class CyclicBarrierTest {
private static CyclicBarrier cyclicBarrier=new CyclicBarrier(10);
public static void main(String[] args) {
IntStream.range(0,10).forEach( i -> new Thread(new Runnable() {
@Override
public void run() {
int random= new Random().nextInt(5000);
try {
Thread.sleep(random);
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
System.out.println(System.currentTimeMillis()+" "+Thread.currentThread().getName()+" got before barrier......");
cyclicBarrier.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
System.out.println(System.currentTimeMillis()+" "+Thread.currentThread().getName()+" got after barrier......");
}
}).start());
}
}