import java.util.ArrayList; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class KlarTilStart { ArrayList klareSeilfly = new ArrayList<>(); ArrayList slepeflyKø = new ArrayList<>(); Lock lås = new ReentrantLock(); Condition ikkeKlartFly = lås.newCondition(); public void seilflyklar(Seilfly fly) { lås.lock(); try { klareSeilfly.add(fly); ikkeKlartFly.signal(); } finally { lås.unlock(); } } public Seilfly nesteSeilfly() { lås.lock(); try { while (klareSeilfly.isEmpty()) { ikkeKlartFly.await(); } return klareSeilfly.remove(0); } catch (InterruptedException e) { return null; } finally { lås.unlock(); } } }