Post

Visualizzazione dei post con l'etichetta Runnable

Creare Thread in Java

DOMANDA: Cos'è e come si crea un Thread?  RISPOSTA: Il Thread  è una parte di un processo che può essere lanciata parallelamente ad altre sottoparti per riuscire a concludere il processo iniziale in un tempo minore.  Supponiamo che un processo sia fatto da due metodi che impiegano rispettivamente 10 e 7 secondi ad essere completati. In linea teorica se questi due metodi fossero lanciati in due Thread paralleli, il tempo totale sarebbe di 10 secondi (cioè il tempo massimo impiegato da uno dei due) invece dei 17 che impiegherebbero se eseguiti in sequenza. Esistono due modi per creare un Thread : estendere la classe java.lang.Thread o implementare l'interfaccia java.lang.Runnable . Il vantaggio di utilizzare Runnable è quello di lasciarci la libertà di estendere qualunque altra classe. Ricordiamo infatti che Java non consente l'ereditarietà multipla.  Calcola1 è un Thread creato estendendo la classe Thread : package  thread; public class Calcola1 ex

ExecutorService: Eseguire Thread a gruppi di N

DOMANDA: Come posso schedulare i Thread affinché siano eseguiti a gruppi di N? RISPOSTA: Esiste un oggetto della classe java.util.Concurrent chiamato ExecutorService che risolve il problema in poche righe di codice. Vediamo un esempio in cui vogliamo svolgere dieci operazioni (ciascuna della durata di mezzo secondo)  eseguendole a gruppi di 2 . Classe Operazione : package executorservice; public class Operazione implements Runnable { private long id ;   public Operazione( long id) { this . id = id; } @Override public void run() { System. out .print( id + " " ); try { Thread.sleep(500); // mezzo secondo di pausa } catch (InterruptedException e) { e.printStackTrace(); } } } La classe di Test : package  executorservice; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class TestConcurrent { public static void main(String[] args) {