import java.util.concurrent.CountDownLatch; public class Hovedprogram { public static void main(String[] args) { Postterminal terminal = new Postterminal(); Utleveringssted utleveringssted = new Utleveringssted("Bunnpris Blindern"); int antallPostbud = 4, antallFabrikker = 3; CountDownLatch fabrikkBarriere = new CountDownLatch(antallFabrikker); CountDownLatch postbudBarriere = new CountDownLatch(antallPostbud); Fabrikk[] fabrikker = { new Fabrikk("klesfabrikk", terminal, "varer1.txt", fabrikkBarriere), new Fabrikk("elektronikk", terminal, "varer2.txt", fabrikkBarriere), new Fabrikk("sportsfabrikk", terminal, "varer3.txt", fabrikkBarriere) }; Postbud[] bud = { new Postbud("Abdi", "Posten", terminal, utleveringssted, postbudBarriere), new Postbud("Bj?rn", "Bring", terminal, utleveringssted, postbudBarriere), new Postbud("Celine", "PostNord", terminal, utleveringssted, postbudBarriere), new Postbud("Dina", "Posten", terminal, utleveringssted, postbudBarriere), }; for (Fabrikk fab : fabrikker) { new Thread(fab).start(); } for (Postbud pb : bud) { new Thread(pb).start(); } try { fabrikkBarriere.await(); terminal.ferdigLaget(); System.out.println("\nFABRIKKENE ER FERDIG\n"); postbudBarriere.await(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("\nN? er b?de postbud og fabrikker ferdige\n"); // for (Postbud pb : bud) { // pb.skrivPakkeInnhold(); // } Thread[] kundeTraader = { new Thread(new Kunde("Ahmed", utleveringssted)), new Thread(new Kunde("Andreas", utleveringssted)), new Thread(new Kunde("Annika", utleveringssted)), new Thread(new Kunde("Bushra", utleveringssted)), new Thread(new Kunde("Samuel", utleveringssted)) }; for (Thread kunde : kundeTraader) { kunde.start(); } for (Thread kunde : kundeTraader) { try { kunde.join(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("N? er programmet ferdig, kundene har f?tt alle varene sine"); } }