Strumenti Utente

Strumenti Sito


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 (11 anni fa) (modifica esterna)