import java.util.concurrent.CyclicBarrier; import java.util.concurrent.BrokenBarrierException; class TestCyclicBarrier{ public static void main(String[] args) throws InterruptedException{ int antallTraader = 5; CyclicBarrier ferdigSignal = new CyclicBarrier(antallTraader, new FerdigArbeider()); //CyclicBarrier ferdigSignal = new CyclicBarrier(antallTraader); System.out.println("Lager og starter tr?der"); for (int i = 0; i < antallTraader; i++) { new Thread(new CyclicArbeider(ferdigSignal)).start(); } } } class FerdigArbeider implements Runnable { public void run() { System.out.println("N?dd barrieren"); } } class CyclicArbeider implements Runnable { private final CyclicBarrier ferdigSignal; public CyclicArbeider(CyclicBarrier ferdigSignal) { this.ferdigSignal = ferdigSignal; } public void run() { try { for (int i = 0; i < 7; i++) { gjorArbeid(i); ferdigSignal.await(); } } catch (InterruptedException ex) { } catch (BrokenBarrierException e) {} } private void gjorArbeid(int n) { System.out.println(n); } }