import java.util.ArrayList; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class Monitor { private ArrayList kniver = new ArrayList<>(); private ArrayList sakser = new ArrayList<>(); private Lock lock = new ReentrantLock(); public void settInn(Kniv k) { lock.lock(); try { kniver.add(k); } finally { lock.unlock(); } } public Kniv[] taUtToKniver() { lock.lock(); try { if (hentAntallKniver() < 2) return null; Kniv[] ut = {kniver.remove(0), kniver.remove(0)}; return ut; } finally { lock.unlock(); } } public int hentAntallKniver() { return kniver.size(); } public void settInn(Saks s) { lock.lock(); try { sakser.add(s); } finally { lock.unlock(); } } public int hentAntallSakser() { return sakser.size(); } }