// yksinkertainen lippu import java.util.concurrent.LinkedBlockingQueue; public class LopetusLippu { // Tämä riittäisi ellei olisi odotaLoppu metodia boolean loppu = false; public boolean onkoLoppu() { return loppu; } public void lopeta() { loppu = true; try { loppuMerkki.put(0); // odotaLopulle } catch (Exception e) {} } // tehokas odotaLoppu // Yksi kerrallaan ottaa jonosta jotain // Jonoon laitetaan aluksi nolla lopeta() metodissa LinkedBlockingQueue loppuMerkki; public LopetusLippu() { loppuMerkki = new LinkedBlockingQueue(); } public void odotaLoppu() { while (true) { try { loppuMerkki.put(loppuMerkki.take()); return; } catch (Exception e) {} } } }