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 (18 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 (18 anni fa) da Marco Danelutto
