import java.util.ArrayList; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.Condition; class MatMonitor{ private ArrayList matliste = new ArrayList<>(); private boolean ferdig = false; Lock matlaas = new ReentrantLock(); Condition ikkeTom = matlaas.newCondition(); public void settInn(Mat mat){ matlaas.lock(); try{ matliste.add(mat); ikkeTom.signalAll(); } finally{ matlaas.unlock(); } } public Mat taUt(){ matlaas.lock(); try{ while (matliste.isEmpty()){ ikkeTom.await(); } return matliste.remove(0); } catch (InterruptedException e){ System.out.println(e); return null; } finally{ matlaas.unlock(); } } public boolean programFerdig(){ return ferdig; } public void settFerdig(){ ferdig = true; } }