import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.Condition; class BrusMaskin { private final Lock brusLaas = new ReentrantLock(); private final Condition harBrusAaKjope = brusLaas.newCondition(); private final Condition trengerPaafyll = brusLaas.newCondition(); private int kapasitet; private int antBrus; public BrusMaskin(int k){ kapasitet = k; antBrus = 0; } public void kjopBrus(){ brusLaas.lock(); try { while(antBrus == 0){ harBrusAaKjope.await(); } antBrus--; System.out.println("Kjoper brus, ant naa: " + antBrus); if (antBrus == 0){ trengerPaafyll.signal(); } } catch(InterruptedException e){ System.out.println("Ble forstyrret naar vi kjopte brus."); } finally { brusLaas.unlock(); } } public void fyllBrus(){ brusLaas.lock(); try { while (antBrus > 0){ trengerPaafyll.await(); } antBrus = kapasitet; System.out.println("Fyller opp brus, ant naa: " + antBrus); harBrusAaKjope.signalAll(); } catch(InterruptedException e){ System.out.println("Ble forstyrret under paafyll."); } finally { brusLaas.unlock(); } } }