lpr-b:repositorytermina
no way to compare when less than two revisions
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
— | lpr-b:repositorytermina [05/10/2007 alle 18:14 (17 anni fa)] (versione attuale) – creata Marco Danelutto | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | <code java> | ||
+ | package threadPoolConTerminazione; | ||
+ | import java.util.LinkedList; | ||
+ | |||
+ | /** | ||
+ | * classe che implementa il repository delle cose da calcolare | ||
+ | * @author marcod | ||
+ | */ | ||
+ | |||
+ | public class Repository< | ||
+ | |||
+ | private LinkedList< | ||
+ | boolean eos = false; | ||
+ | |||
+ | public Repository() { | ||
+ | super(); | ||
+ | ll = new LinkedList< | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * inserzione di un elemento nel pool | ||
+ | * @param data il dato da inserire | ||
+ | */ | ||
+ | public synchronized void insert(T data) { | ||
+ | ll.add(data); | ||
+ | notify(); | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * estrazione dell' | ||
+ | * @return il dato più vecchio nel pool (rimosso) | ||
+ | */ | ||
+ | public synchronized T extract() throws EndOfStreamException, | ||
+ | while(ll.isEmpty()) { | ||
+ | if(eos) { | ||
+ | throw new EndOfStreamException(); | ||
+ | } | ||
+ | wait(); | ||
+ | } | ||
+ | T task = ll.remove(); | ||
+ | return task; | ||
+ | } | ||
+ | |||
+ | public synchronized void eos() { | ||
+ | eos = true; | ||
+ | } | ||
+ | } | ||
+ | </ |
lpr-b/repositorytermina.txt · Ultima modifica: 05/10/2007 alle 18:14 (17 anni fa) da Marco Danelutto