import java.util.Scanner; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; class Terminal implements BrukerGrensesnitt { Scanner term; // Neste tre variable er for å laase terminalen i oppgave 6 med traader: Lock laas = new ReentrantLock(); Condition ledigVindu = laas.newCondition(); boolean vinduErLedig = true; public Terminal (Scanner terminal) { term = terminal; } public void laas() { // laas terminalvinduet (oppgave 6) laas.lock(); try { while (!vinduErLedig) { ledigVindu.await(); } vinduErLedig = false; } catch (Exception e) { } finally { laas.unlock(); } } public void laasOpp() { // laas opp terminalvinduet (oppgave 6) laas.lock(); try { vinduErLedig = true; ledigVindu.signal(); } finally { laas.unlock(); } } @Override public void giStatus(String s) { System.out.println(s); } @Override public int beOmKommando(String spmaal, String[] alternativer) { int okSvar; System.out.print(spmaal + "\n"); String svar = ""; while (!sjekkValg(alternativer.length, svar)) { // System.out.println("Du har foelgende valgmuligheter:"); for (int i = 0; i < alternativer.length; i++) { // Valg angis med index i alternativer array System.out.println(i + ": " + alternativer[i]); } System.out.print("Valg: "); svar = term.next(); if (!sjekkValg(alternativer.length, svar)) { System.out.println(svar + " er ikke et alternativ."); } } okSvar = Integer.parseInt(svar); return okSvar; } private boolean sjekkValg (int antValg, String valgt) { boolean sjekk = false; try { int v = Integer.parseInt(valgt); sjekk = (v>=0 && v