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;
}
}