import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.Condition; public class BrusMaskin{ private Lock lock = new ReentrantLock(); private Condition erTom = lock.newCondition(); private Condition harBrus = lock.newCondition(); private int storrelse; private int antallBrus; BrusMaskin(int storrelse){ this.storrelse = storrelse; } public void kjopBrus(){ lock.lock(); try{ while(antallBrus == 0){ harBrus.await(); } System.out.println("Kjoper en brus :) Antall brus igjen: " + --antallBrus); if(antallBrus == 0){ erTom.signal(); } }catch (InterruptedException e){ }finally{ lock.unlock(); } } public void fyllpaa(){ lock.lock(); try{ while(antallBrus > 0){ erTom.await(); } antallBrus = storrelse; System.out.println("Brusmaskienen er fullt opp!"); harBrus.signalAll(); }catch (InterruptedException e){ }finally{ lock.unlock(); } } }