Strumenti Utente

Strumenti Sito


lpr-b:maintpconcurdue
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:maintpconcurdue [22/10/2007 alle 14:41 (18 anni fa)] (versione attuale) – creata Marco Danelutto
Linea 1: Linea 1:
 +<code java>
 +package threadPoolConcurrencyDue;
  
 +import java.util.concurrent.*;
 +
 +
 +public class ProvaThreadPool {
 +
 + public static void main(String[] args) {
 +
 + final int N = 16; // numero dei task da calcolare
 + final int T = 4; // numero minimo di thread nel pool 
 + final int MAX_T = 8;    // numero massimo di thread nel pool 
 +
 + ThreadPoolExecutor tpe = null; // creazione dell'esecutore
 + tpe = new ThreadPoolExecutor(T,MAX_T,10000L,TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
 +
 + // creazione del repository per i risultati
 + LinkedBlockingQueue<Integer> results = new LinkedBlockingQueue<Integer>();
 + // creazione del thread stampatore
 + Stampatore<Integer> stampatore = new Stampatore<Integer>(results);
 + stampatore.start();
 + // funzione da calcolare
 + Compute<Integer,Integer> fun = new FunzioneSemplice();
 +
 + // questo sostituisce il codice del generatore:    
 + for(int i=0; i<N; i++) {                 // per ogni task,
 + Task t = new Task(i,fun,results); // crea un nuovo Task Runnable
 + tpe.execute(t); // e lo passa al ThreadPoolExceutor
 + try {Thread.sleep(10); } catch(InterruptedException e) {e.printStackTrace(); // attende un po' prima di generarne un altro
 + }
 + tpe.shutdown(); // equivalente alla dichiarazione di fine stream del generatore 
 + try {
 + tpe.awaitTermination(50000L, TimeUnit.MILLISECONDS);   // attesa della terminazione
 + } catch (InterruptedException e) {
 + System.out.println("ThreadPoolExecutor non ha terminato l'esecuzione: scatta timeout");
 + }
 + System.out.println("Tutti i thread del pool sono terminati\nTerminazione Stampatore ...");
 + stampatore.interrupt(); // come prima
 + System.out.println("Terminazione main");
 + // fine lavori ...
 + return;
 + }
 +
 +}
 +
 +</code>
lpr-b/maintpconcurdue.txt · Ultima modifica: 22/10/2007 alle 14:41 (18 anni fa) da Marco Danelutto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki