import java.util.*; import java.util.concurrent.*; public class Vente{ /***/ CyclicBarrier b ; // sikrer at alle er ferdige naar vi tar tid og sum static int antTraader, antGanger; // Etter summering: riktig svar er:antTraader*antGanger public static void main (String [] args) { if (args.length < 2) { System.out.println("bruk >java Parallell "); }else{ int antKjerner = Runtime.getRuntime().availableProcessors(); /***/ antTraader = new Integer(args[0]).intValue(); antGanger = new Integer(args[1]).intValue(); new Vente().utfoer(); } } // end main void utskrift(double tid) { System.out.println("Main ferdig pa " + tid + " nanosec"); } void utfoer () { b = new CyclicBarrier(antTraader+1); //+1, ogsaa main long t = System.nanoTime(); // start klokke for (int j = 0; j< antTraader; j++) new Thread(new Para(j)).start(); // start antTraader traader try{ // main thread wenter paa at traadene er ferdige System.out.println("MAIN venter pa:" + antTraader+" trader"); b.await(); } catch (Exception e) {return;} double tid = (System.nanoTime()-t)/1000000.0; utskrift(tid); } // utfor class Para implements Runnable{ int ind; Para(int ind) { this.ind =ind;} public void run() { System.out.println("Traad nr:" + ind+"sier jeg starter"); for (int j = 0; j< antGanger; j++) { System.out.println("Traad nr:" + ind+"sier hei igjen"); try { Thread.sleep(1000); System.out.println("Traad nr:" + ind+" sier hei etter aa ha ventet ett sekund") ; } catch (Exception e) { return;} } try { // wait on all other threads + main b.await(); } catch (Exception e) {return;} } // end run } // end class Para }// END class Parallell