import java.util.concurrent.CyclicBarrier; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CountDownLatch; class Arbeid implements Runnable { // private CyclicBarrier barriere; private CountDownLatch latch; public Arbeid(CountDownLatch latch) { this.latch = latch; // this.barriere = barriere; } @Override public void run() { for (int i = 0; i < 5; i++) { System.out.println(i); latch.countDown(); // bare en metode som finnes for CountDownLatch try { latch.await(); //barriere.await() } catch (InterruptedException e) { System.out.println(e); } // catch (BrokenBarrierException e) { // hvis du bruker en CyclicBarrier m? denne exceptionen catches // System.out.println(e); // } } } } class Hoved { public static void main(String[] args) { int antallTraader = 10; CyclicBarrier barriere = new CyclicBarrier(antallTraader); // venter p? at antallTraader-antall kall p? await(), ?pnes, og lukkes igjen. Prosess gjentas CountDownLatch latch = new CountDownLatch(antallTraader); // venter p? et antallTraader-antall kall p? countDown(), ?pnes en gang og forblir ?pen Arbeid run1 = new Arbeid(latch); for (int i = 0; i < antallTraader; i++) { new Thread(run1).start(); } } }