import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; class Sted { private String beskrivelse; private Sted utgang; private Skattkiste skatt; // tre neste variable for aa laase kisten i oppgave 6 private boolean kisteErLedig = true; Lock laas = new ReentrantLock(); Condition ledigKiste = laas.newCondition(); public Sted(String velkomst) { beskrivelse = velkomst; } public String hentBeskrivelse() { return beskrivelse; } public void setUtgang(Sted til) { utgang = til; } public Sted gaaNeste() { return utgang; } public void plasserSkatt(Skattkiste skatt) { this.skatt = skatt; } public Skattkiste hentKiste() { laas.lock(); try { while (!kisteErLedig) { ledigKiste.await(); } kisteErLedig = false; return skatt; } catch (Exception e) { return skatt; } finally { laas.unlock(); } } public void leverTilbakeKiste() { laas.lock(); try { kisteErLedig = true; ledigKiste.signal(); } finally { laas.unlock(); } } public String toString() { return beskrivelse + skatt; } }