lpr-b-2007-2008:repositorytermina
package threadPoolConTerminazione; import java.util.LinkedList; /** * classe che implementa il repository delle cose da calcolare * @author marcod */ public class Repository<T> { private LinkedList<T> ll = null; boolean eos = false; public Repository() { super(); ll = new LinkedList<T>(); } /** * inserzione di un elemento nel pool * @param data il dato da inserire */ public synchronized void insert(T data) { ll.add(data); notify(); } /** * estrazione dell'elemento più vecchio dal pool * @return il dato più vecchio nel pool (rimosso) */ public synchronized T extract() throws EndOfStreamException, InterruptedException { while(ll.isEmpty()) { if(eos) { throw new EndOfStreamException(); } wait(); // se viene interrotta è per la interrupt allo Stampatore } T task = ll.remove(); return task; } public synchronized void eos() { eos = true; } }
lpr-b-2007-2008/repositorytermina.txt · Ultima modifica: 19/09/2008 alle 14:08 (16 anni fa) da 127.0.0.1