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!"); } }