Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di mainetz
    Registrato dal
    Oct 2003
    Messaggi
    132

    [JAVA] Cos'è e come usare il thread pool.

    Ciao a tutti!

    Di nuovo io....

    Sono venuto a conoscenza della possibilità di creare un threadpool che contiene al suo interno un set di thread.

    Volevo sapere come è possibile creare questo trhead pool e come si possono far partire al suo interno i vari thread!

    Grazie mille!

    Saluti!

    mainetz

  2. #2
    ma usare google o altro motore di ricerca mai?

    Te lo dico perché in giro ci sono centinaia di tutoriale che lo spiegano, fin nei minimi dettagli.
    Uno su tutti: http://java.sun.com/docs/books/tutor...ncy/pools.html
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  3. #3
    Utente di HTML.it L'avatar di mainetz
    Registrato dal
    Oct 2003
    Messaggi
    132
    Guarda scusa hai pienamente ragione ma ti giuro che l'ho usato google...

    Ho anche la documentazione completa di java ma non so come mai non riesco ancora a sfruttarla al meglio....

    Grazie mille di nuovo!!!!

    Saluti.

    mainetz.

  4. #4
    Utente di HTML.it L'avatar di mainetz
    Registrato dal
    Oct 2003
    Messaggi
    132
    Ciao a tutti!

    Più o meno ho capito come si usano e si creano i threadpool ho fatto questa cosa:

    codice:
    package downloader;
    
    import java.util.concurrent.*;
    
    public class ThreadPool {
    	
    
    	private final int NUMERO_THREAD = 10;
    	
    	private ConcurrentLinkedQueue<Runnable> coda = new ConcurrentLinkedQueue<Runnable>();
    	
    	private final ExecutorService pool = Executors.newFixedThreadPool(NUMERO_THREAD);
    	 
    	public void createpool(){
                              //questo metodo inserisce in coda 10 thread
    		for (int i = 0; i<10 ; i++){
    			DwnThread m = new DwnThread();//esiste una classe chiamata DwnThread che implementa runnable
    			Thread t = new Thread(m);
    			t.setDaemon(true);
    			coda.add(t);
    		}
    		
    		new Thread(new Runnable() {
    		    public void run() {
    		      while(!coda.isEmpty()) {
    		        try {
    		          // prendo e rimuovi thread e li eseguo
    		          pool.execute(coda.poll());
    		        } catch (Exception e) {}
    		      }
    		    }
    		  }).start();		
    	}
    }
    Secondo voi ho fatto giusto o ho fatto una boiata???

    Vi faccio questa domanda perchè l'applicazione fa quello che deve fare ma non muore mai. Credo che i thread non muoiano mai.. Come posso ucciderli quando hanno finito il compito che dovevano fare?

    Grazie mille!

    mainetz

  5. #5
    Utente di HTML.it L'avatar di mainetz
    Registrato dal
    Oct 2003
    Messaggi
    132
    Che picio nel doc di java c'è il metodo già fatto....

    Lo posto magari può essere di aiuto a qualcuno:

    codice:
     void shutdownAndAwaitTermination(ExecutorService pool) {
       pool.shutdown(); // Disable new tasks from being submitted
       try {
         // Wait a while for existing tasks to terminate
         if (!pool.awaitTermination(60, TimeUnit.SECONDS)) {
           pool.shutdownNow(); // Cancel currently executing tasks
           // Wait a while for tasks to respond to being cancelled
           if (!pool.awaitTermination(60, TimeUnit.SECONDS))
               System.err.println("Pool did not terminate");
         }
       } catch (InterruptedException ie) {
         // (Re-)Cancel if current thread also interrupted
         pool.shutdownNow();
         // Preserve interrupt status
         Thread.currentThread().interrupt();
       }
     }
    Ciaoooooooooooo!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.