import java.util.ArrayList; import java.util.HashSet; import java.util.concurrent.CountDownLatch; public class Hovedprogram { public static void main(String[] args) { HashSet garntyper = new HashSet<>(); garntyper.add("Silke"); garntyper.add("Mohair"); garntyper.add("Merino"); Spinneri spinneri = new Spinneri("Bushras spinneri", garntyper, 50); ArrayList traader = new ArrayList<>(); final int ANTALL_TRAADER = 6; CountDownLatch barriere = new CountDownLatch(ANTALL_TRAADER); for (int i = 0; i < 3; i++) { ImportereMaterialer oppgave = new ImportereMaterialer(spinneri, barriere); Thread importoer = new Thread(oppgave); Spinner spinner = new Spinner(spinneri, 50, barriere); traader.add(importoer); traader.add(spinner); importoer.start(); spinner.start(); } // her sørger vi for at alle tråder venter til alle er ferdige før de går videre og terminerer // for (Thread traad : traader) { // try { // traad.join(); // } // catch (InterruptedException e) { // System.out.println("Tråden ble avbrutt"); // } // } // venter på at alle trådene som bruker barrieren CountDownLatch har telt ned med countDown() try { barriere.await(); } catch (InterruptedException e) { System.out.println("Fikk ikke ventet"); } Strikkeklubb strikkeklubb = new Strikkeklubb("Claras strikkeklubb"); Strikker strikker = Strikker.hentInstans("Clara", spinneri, strikkeklubb); strikker.start(); try { strikker.join(); // Her venter main-tråden på strikker-tråden før den går videre og utfører siste del av koden } catch (InterruptedException e) { System.out.println("Strikkeren ble avbrutt"); } System.out.println("Status på Bushras spinneri"); // Da får vi de endelige verdiene her, som main-tråden aksesserer til slutt og printer ut for (String k : spinneri.materialer.keySet()) { System.out.println("Vi har: " + spinneri.materialer.get(k) + " gr " + k + " på lager."); } System.out.println("Antall nøster: " + spinneri.antallNoester() + ". Ferdig!"); } }