import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; public class Brusautomat { private int kapasitet; private int antallBrus; private Lock laas = new ReentrantLock(); private Condition maaFyllesOpp = laas.newCondition(); private Condition tom = laas.newCondition(); public Brusautomat(int kapasitet){ this.kapasitet = kapasitet; antallBrus = kapasitet; } public void refill(){ laas.lock(); try { while(antallBrus > 0){ maaFyllesOpp.await(); } antallBrus = kapasitet; tom.signalAll(); System.out.println("Brusmaksinen er naa fylt opp :))"); } catch (Exception e) { System.out.println("Noe gikk galt i refill"); }finally{ laas.unlock(); } } public void kjopBrus(){ laas.lock(); try { while(antallBrus == 0){ tom.await(); } antallBrus--; System.out.println("Jeg fikk en brus :)"); if(antallBrus == 0){ maaFyllesOpp.signal(); } } catch (Exception e) { System.out.println("Noe gikk galt i kjopBrus"); }finally{ laas.unlock(); } } }