Threads in Java. I threads. Costruttori. Prof.ssa Sara Michelangeli

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Threads in Java. I threads. Costruttori. Prof.ssa Sara Michelangeli"

Transcript

1 Threads in Java Prof.ssa Sara Michelangeli I threads I threads o "processi leggeri" (light weight process) sono flussi di esecuzione nell'ambito di uno stesso processo, che condividono tra loro risorse e aree di memoria, ad eccezione del proprio program counter e del proprio stack. Con multithreading definiamo l esecuzione contemporanea (o apparentemente contemporanea) di diversi thread nell ambito dello stesso processo. La gestione del multithreading può essere a carico del processo stesso, oppure del sistema operativo (se supporta il multithreading). La stessa esecuzione di un semplice programma a carico di JVM dà origine a un thread. La JVM in runtime normalmente usa i servizi di sistema operativo relativi ai thread (modalità native thread o kernel thread), come avviene in genere in ambiente Windows e Solaris (solitamente in time-slicing e scheduling preemptive in presenza di priorità) ma può anche prendere interamente in carico la schedulazione dei thread (modalità green-thread o user thread), come avviene in alcune versioni di Unix. In tal caso il sistema operativo assegna alla JVM un quanto di tempo, indipendentemente dal numero di thread attivi, la cui esistenza è totalmente ignorata dal sistema stesso, che vede solo il thread principale. In tal caso è dunque la JVM che si occupa della gestione dei propri thread. E' buona regola verificare la correttezza dell'esecuzione in più ambienti e su varie piattaforme e privilegiare delle modalità operative in cui il rilascio delle risorse, quando opportuno, sia gestito a livello di programmazione. Java supporta il multithreading in modo nativo attraverso la classe java.lang.thread e l interfaccia java.lang.runnable. Per il programmatore un Thread è un flusso di esecuzione individuato da un'istanza della classe Thread (o di una sua sottoclasse derivata) o da un oggetto che implementa l interfaccia Runnable. Un thread esegue l' algoritmo codificato nel metodo run() e va in esecuzione concorrente con gli altri thread esistenti. Lo stesso metodo main() di un qualunque oggetto attiva un thread, l'entry point dell'esecuzione, che termina al terminare del main stesso e viene schedulato con tutti gli altri thread definiti nel progetto. Come già detto Java mette a disposizione la classe Thread fornita dal package java.lang. Esamineremo prima suoi i metodi principali per poi passare a spiegare le modalità di implementazione. Costruttori Tra i vari costruttori disponibili esaminiamo i più utilizzati public Thread(); dichiara un oggetto di tipo thread public Thread(String name); dichiara un oggetto di tipo thread definendone il nome per implementare l'interfaccia Runnable nel caso si attui la seconda modalità di programmazione si useranno public Thread(Runnable target); public Thread(Runnable target, String name);

2 Metodi statici I metodi statici agiscono sul thread corrente. Ricordiamo: public static void sleep(long millisecondi) interrompe il thread corrente che viene meso in attesa per i millisecondi passati nel parametro, l'esecuzione passa al primo thread della reading list, con cambio di contesto e forzatura della schedulazione. Tutti gli altri thread continuano ad avanzare nell'esecuzione. In caso di sincronizzazione bisogna tener presente che lo sleep non agisce sui lock del thread. Se in questo tempo qualcun altro chiama il suo metodo interrupt(), il thread viene riattivato da una InterruptedException. public static void yield() il thread corrente cede forzatamente la Cpu ad altri thread in attesa, di pari priorità. Se nessun thread di pari priorità è in attesa il thread continua l'avanzamento senza cambio di contesto.questo metodo è particolarmente utile per forzare il rilascio di Thread cpu_bound, senza dipendere dal sistema operativo. Metodi di istanza I metodi di istanza vengono richiamati su un determinato thread. I metodi più importanti sono public void run() E' il metodo più importante, che attua un override sul metodo run di classe base, che è vuoto. Nel metodo run viene implementato il codice che il thread deve effettivamente eseguire. Definisce dunque il suo comportamento e la sequenza delle istruzioni che andranno in esecuzione all'attivazione del thread. Public synchronized void start() E' il metodo con cui un trhead viene avviato e posto in modalità ready to run. La chiamata di start su un thread già avviato genera un errore. public void stop() (deprecated) Termina un thread public void join() Mette in attesa il thread corrente fino alla terminazione del thread su cui è chiamato. E' possibile impostare un'attesa massima passano i millisecondi come parametro. public void suspend() (deprecated) Sospende un thread, mentre gli altri continuano l'esecuzione, ma non libera le risorse impegante public void resume() (deprecated) E' il metodo utilizzato per riattivare il thread e renderlo nuovamente eseguibile,trasferendolo

3 nella reading list. I metodi stop, suspend e resume sono deprecati in quanto, agendo forzatamente su un thread senza alcun controllo sul suo stato di esecuzione possono creare situazioni stallo o deadlock 1)Prima modalità di implementazione di un thread Creazione di una sottoclasse Thread con extends Thread Il primo esercizio crea una sottoclasse di Thread chiamata conta che stampa a console per 10 volte un indice che si incrementa ad ogni step e il nome del Thread class conta extends Thread{ setname("conta"); /* il thread corrente è chiamato conta*/ for (int i=0; i<10; i++) System.out.println(i+" "+getname()); public class thread1 { conta threadconta=new conta (); threadconta.start(); /* il thread corrente è il main*/ System.out.println(Thread.currentThread().getName()); Questa è l'esecuzione main 0 conta 1 conta 2 conta 3 conta 4 conta 5 conta 6 conta 7 conta 8 conta 9 conta Modifichiamo questo esercizio: istanziamo due thread che avranno un nome diverso, acquisito come parametro passato dal costruttore di classe e mandiamoli in esecuzione in concorrenza. Usiamo una sleep nella for per rallentare i thread favorendone l'alternanza in run class conta2 extends Thread{ public conta2(string nome) { setname(nome);

4 for (int i=0; i<10; i++){ try { sleep(2); catch (InterruptedException e) { System.out.println(i+" "+getname()); public class thread2 { conta2 threadconta1=new conta2 ("conta1"); conta2 threadconta2=new conta2 ("conta2"); threadconta1.start(); threadconta2.start(); System.out.println(Thread.currentThread().getName()); L'esecuzione sarà del tipo main 0 conta1 1 conta1 0 conta2 2 conta1 1 conta2 3 conta1 4 conta1 5 conta1 2 conta2 6 conta1 7 conta1 3 conta2 8 conta1 4 conta2 9 conta1 5 conta2 6 conta2 7 conta2 8 conta2 9 conta2 2)Seconda modalità di implementazione di un thread Utilizzo della interfaccia Runnable con implements Runnable L'utilizzo dell'interfaccia Runnable per la gestione dei Threads è molto importante soprattutto quando la nostra classe deve già ereditare per esempio da una classe Applet, o un JComponent. Sappiamo infatti che in Java l'erediterietà multipla non è consentita, quindi, attraverso l'interfaccia Runnable possiamo utilizzare la classe base senza ereditarla. Gli steps da eseguire per creare un thread con questa modalità sono: creare una classe implements Runnable fare un override del metodo run all'interno di questa classe istanziare un oggetto di questa classe Runnable creare un oggetto di classe thread istanziando come parametro nel suo costruttore l'oggetto Runnable appena creato avviare l'oggetto thread così istanziato, richiamando su di esso il metodo start.

5 Vediamo per una maggiore chiarezza l'esempio precedente implementato con questa seconda modalità. class contarunnablethread implements Runnable{ public void run() { for(int i=0;i<10;i++) System.out.print(i+""); public class contarunnable { contarunnablethread ct=new contarunnablethread(); Thread t=new Thread(ct); t.start(); Uno tra i primi classici esempi su queste prooblematiche è l'esercizio delle cosiddette "campane stonate", con tre thread che si alternano in esecuzione con la stampa di un proprio suono, passato come parametro, che sarà "din", "don", o "dan" class campana implements Runnable{ String suono; int volte; public campana(string s,int v) { this.suono=s; this.volte=v; for (int i=0;i<volte;i++) { System.out.print(suono+" "); try{ Thread.sleep(100); catch(interruptedexception e){ public class runnablethread { campana cdin=new campana("din",5); Thread tdin=new Thread(cdin); campana cdon=new campana("don",9); Thread tdon=new Thread(cdon); Thread tdan=new Thread(new campana("dan",13)); tdin.start(); tdon.start(); tdan.start(); l'esecuzione sarà simile a don din dan din dan don din dan don din dan don din dan don dan don dan don dan don dan don dan dan dan dan

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010 Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori l Introduzione ai Thread in Java A.A. 2009/2010 1 Thread Un thread è un flusso sequenziale di esecuzione di istruzioni all interno

Dettagli

Processi e multitasking

Processi e multitasking Processi e multitasking Multitasking: caratteristica di un S.O. che permette l esecuzione simultanea (o pseudosimultanea) di più processi Cooperative Multitasking: gestione affidata ai processi stessi,

Dettagli

Processi e multitasking. Thread e Multithreading

Processi e multitasking. Thread e Multithreading Processi e multitasking Thread e Multithreading Multitasking: caratteristica di un S.O. che permette l esecuzione simultanea (o pseudosimultanea) di più processi Cooperative Multitasking: gestione affidata

Dettagli

Esercitazione 2: Java Thread

Esercitazione 2: Java Thread Esercitazione 2: Java Thread Thread Un thread è un singolo flusso sequenziale di controllo all interno di un processo Un thread (o processo leggero) è un unità di esecuzione che condivide codice e dati

Dettagli

Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread:

Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread: Esercitazione 2: Thread Un thread è un singolo flusso sequenziale di controllo all interno di un processo Un thread (o processo leggero) è un unità di esecuzione che condivide codice e dati con altri thread

Dettagli

I Thread. un thread è uno stream di esecuzione del programma

I Thread. un thread è uno stream di esecuzione del programma I Thread un thread è uno stream di esecuzione del programma Sistema Operativo e Thread Un processo o thread una successione di operazioni che vengono eseguite dal sistema operativo in modo sequenziale

Dettagli

Java Thread. Thread. Un thread

Java Thread. Thread. Un thread Java Thread Thread Un thread è un singolo flusso sequenziale di controllo all interno di un processo Un thread (o processo leggero) è un unità di esecuzione che condivide codice e dati con altri thread

Dettagli

SISTEMI OPERATIVI. Java multithreading. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II) LABORATORIO

SISTEMI OPERATIVI. Java multithreading. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II) LABORATORIO SISTEMI OPERATIVI (MODULO DI INFORMATICA II) LABORATORIO Java multithreading Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) Università degli Studi di Bergamo a.a. 2012-13 Sommario Programmazione

Dettagli

Threads. Processi Single e Multi-thread

Threads. Processi Single e Multi-thread Threads Processi Single e Multi-thread 1 Benefici Diminuisce i tempi di risposta di una applicazione: durante attesa altre attività della applicazione possono essere fatte Condivisione delle risorse: tutti

Dettagli

I Thread. Sistema Operativo e Thread

I Thread. Sistema Operativo e Thread I Thread un thread è uno stream di esecuzione del programma Sistema Operativo e Thread Un processo o thread una successione di operazioni che vengono eseguite dal sistema operativo in modo sequenziale

Dettagli

Sistemi Operativi. Processi e thread

Sistemi Operativi. Processi e thread Sistemi Operativi Processi e thread A.A. 2018-2019 Processi (e thread) Modello concettuale Creazione di processi 1. System initialization 2. Execution of a process-creation system call by a running process

Dettagli

Thread in Java. Thread = flusso di esecuzione indipendente nel codice del programma

Thread in Java. Thread = flusso di esecuzione indipendente nel codice del programma Thread in Java Thread = flusso di esecuzione indipendente nel codice del programma Come si può realizzare il concetto di Thread in Java? Seguendo la filosofia OO: sono oggetti particolari ai quali si richiede

Dettagli

Telematica II 17. Esercitazione/Laboratorio 6

Telematica II 17. Esercitazione/Laboratorio 6 Multitasking e Multithreading Telematica II 17. Esercitazione/Laboratorio 6 Multitasking si riferisce all abilità di un computer di eseguire processi (jobs) multipli in maniera concorrente si ricorda che

Dettagli

THREAD. Programmazione in rete e laboratorio. Come si crea un thread

THREAD. Programmazione in rete e laboratorio. Come si crea un thread Programmazione in rete e laboratorio JAVA - Thread Alberto Martelli THREAD Thread: flusso sequenziale di controllo (esecuzione di istruzioni) in un programma. Nello stesso programma si possono far partire

Dettagli

Eccezioni e Thread (cenni)

Eccezioni e Thread (cenni) Eccezioni e Thread (cenni) Linguaggi di Programmazione: Paradigmi di Programmazione (Sperimentazioni) Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149

Dettagli

Multitheading. Corso di Laurea in Informatica. Sperimentazioni di Linguaggi di Programmazione: Paradigmi di Programmazione. a.a.

Multitheading. Corso di Laurea in Informatica. Sperimentazioni di Linguaggi di Programmazione: Paradigmi di Programmazione. a.a. Multitheading Corso di Laurea in Informatica Sperimentazioni di Linguaggi di Programmazione: Paradigmi di Programmazione a.a. 1999/2000 Matteo Baldoni 1 Thread multipli all interno di un Task thread PC

Dettagli

Java thread, concorrenza

Java thread, concorrenza Java thread, concorrenza laboratorio 1 A.Memo febbraio 2004 il thread principale in Java ogni programma in esecuzione è un thread il metodo main() è associato al main thread per poter accedere alle proprietà

Dettagli

Programmazione concorrente in Java

Programmazione concorrente in Java Programmazione concorrente in Java Multithreading in Java Ogni thread e un oggetto, creato come istanza della classe java.lang.thread La classe Thread contiene tutti i metodi per gestire i threads L utente

Dettagli

THREAD IN JAVA. Thread. Un thread (lightweight process) è un singolo flusso sequenziale di controllo all interno di un processo

THREAD IN JAVA. Thread. Un thread (lightweight process) è un singolo flusso sequenziale di controllo all interno di un processo THREAD IN JAVA Come si può realizzare il concetto di Thread in Java? NEL MODO PIU NATURALE! Sono oggetti particolari ai quali si richiede un servizio (chiamato start()) corrispondente al lancio di una

Dettagli

Multithreading in Java I parte. Lorenzo Gallucci

Multithreading in Java I parte. Lorenzo Gallucci Multithreading in Java I parte Lorenzo Gallucci Java: un linguaggio ed un sistema predisposti per il multitasking È possibile creare e gestire Thread nativamente (senza dover ricorrere a librerie esterne)

Dettagli

Come si crea un thread. Thread in Java. Altro modo di creare un thread. Come si crea un thread

Come si crea un thread. Thread in Java. Altro modo di creare un thread. Come si crea un thread Thread in Java Come si crea un thread Una applicazione Java che usa i thread può eseguire più attività contemporaneamente. Esempio: aggiornare l'informazione grafica sullo schermo e accedere alla rete.

Dettagli

Lab 1: Java Multithreading

Lab 1: Java Multithreading Dept. of Computer Science Lab 1: Java Multithreading Matteo Camilli matteo.camilli@unimi.it Laboratorio di Sistemi Operativi a.a. 2015/16 Università degli Studi di Bergamo 1 Outline Programmazione multithreading

Dettagli

Concorrenza e sincronizzazione

Concorrenza e sincronizzazione Concorrenza e sincronizzazione Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Cosa faremo oggi 2 Concorrenza Sincronizzazione Concorrenza 3 Nei programmi Java fino ad ora sviluppati è presente

Dettagli

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java programmi sorgente: files.java compilatore Indipendenza di java dalla macchina ospite Programmi java Programmi java Programmi java files.class bytecode linker/loader bytecode bytecode Java API files.class

Dettagli

Multithreading/2. Più richieste servite simultaneamente > 1 thread per ogni connessione client (+ 1 thread per accettare nuove richieste).

Multithreading/2. Più richieste servite simultaneamente > 1 thread per ogni connessione client (+ 1 thread per accettare nuove richieste). Multithreading Osservazioni su EchoServer Programmazione TCP in Java EchoServer ed EchoClient Uso del multithreading nella programmazione di rete ChatClient e ChatServer Multithreading/2 Più richieste

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA9 B2 Multithreading 1 Prerequisiti Programmazione base in Java Significato di multithreading Concetti di base sui sistemi operativi Attesa attiva Attesa passiva 2 1

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Tecniche di Programmazione: Thread Parte a versione 1.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi

Dettagli

Multithreading. Multithreading/2

Multithreading. Multithreading/2 Multithreading Osservazioni su EchoServer Programmazione TCP in Java EchoServer ed EchoClient Uso del multithreading nella programmazione di rete ChatClient e ChatServer Esempio di Web server(?) Multithreading/2

Dettagli

Thread Java. Processi

Thread Java. Processi Thread Java Giacomo Cabri 31 Ottobre 2003 Seminario di Principi di Sistemi Operativi Giacomo Cabri 1 Processi Nei sistemi concorrenti, il termine processo denota la singola attività eseguita in modo indipendente

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T5 B1-Programmazione multithreading 1 Prerequisiti Schedulazione Attesa indefinita Lo stallo Tecnica round-robin 2 1 Introduzione La programmazione concorrente consente di chiedere

Dettagli

Esercizi sui Thread. Esercitazione di Laboratorio di Programmazione di Rete A. Daniele Sgandurra 24/09/2008. Università di Pisa

Esercizi sui Thread. Esercitazione di Laboratorio di Programmazione di Rete A. Daniele Sgandurra 24/09/2008. Università di Pisa Esercizi sui Thread Esercitazione di Laboratorio di Programmazione di Rete A Daniele Sgandurra Università di Pisa 24/09/2008 Creare Thread: l Interfaccia Runnable Per eseguire un attività in un thread

Dettagli

Programmazione concorrente in Java

Programmazione concorrente in Java Programmazione concorrente in Java Seminario di Principi di Sistemi Operativi - LM Ph.D. Ing. Mariachiara Puviani - mariachiara.puviani@unimore.it http://mars.ing.unimo.it/wiki/index.php/user:mariachiara

Dettagli

Introduzione ai thread

Introduzione ai thread Introduzione ai thread 1 Processi Immagine di un processo (codice, variabili locali e globali, stack, descrittore) Risorse possedute: (file aperti, processi figli, dispositivi di I/O..), L immagine di

Dettagli

ASD: Sistemi Distribuiti (Prof. Scarano) 24/04/2002

ASD: Sistemi Distribuiti (Prof. Scarano) 24/04/2002 Organizzazione della lezione 8. Java: Eccezioni e Thread Vittorio Scarano Algoritmi e Strutture Dati: Sistemi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno Le eccezioni come

Dettagli

8. Java: Eccezioni e Thread

8. Java: Eccezioni e Thread 8. Java: Eccezioni e Thread Vittorio Scarano Algoritmi e Strutture Dati: Sistemi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno Organizzazione della lezione Le eccezioni motivazioni

Dettagli

Programmazione Concorrente e Distribuita

Programmazione Concorrente e Distribuita Programmazione Concorrente e Distribuita Esame scritto del 29 Giugno 2012 Versione I Esercizio 1 ( punti) 1 class Mammal { 2 S t r i n g name = f u r r y ; 3 S t r i n g makenoise ( ) { return g e n e

Dettagli

Java Threads. esempi

Java Threads. esempi Java Threads esempi Creazione public class ProvaThread { public static void main(string[] args) { Runnable r = new MyRunnable(); Thread t = new Thread(r);.... class MyRunnable implements Runnable { public

Dettagli

Thread. Introduzione ai thread Modelli di programmazione I Thread di Java

Thread. Introduzione ai thread Modelli di programmazione I Thread di Java Thread Introduzione ai thread Modelli di programmazione I Thread di Java Thread Molti sistemi operativi forniscono il supporto per definire sequenze di controllo multiple all'interno di un singolo processo

Dettagli

I Thread in Java. Sistemi Operativi L-A. I threads in Java

I Thread in Java. Sistemi Operativi L-A. I threads in Java I Thread in Java I threads in Java Ogni programma Java contiene almeno un singolo thread, corrispondente all esecuzione del metodo main() sulla JVM. E possibile creare dinamicamente nuovi thread attivando

Dettagli

I thread di uno stesso processo condividono dati e codice del processo, ma lo stack di esecuzione ed il program counter sono privati.

I thread di uno stesso processo condividono dati e codice del processo, ma lo stack di esecuzione ed il program counter sono privati. Un thread (o processo leggero) è una attività, descritta da una sequenza di istruzioni, che esegue all'interno del contesto di esecuzione di un programma. Un thread procede nella sua esecuzione per portare

Dettagli

Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale. Anno Accademico 2012/2013

Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale. Anno Accademico 2012/2013 Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale Anno Accademico 2012/2013 Thread e processi Da software ci si attende la concorrenza. Java è stato progettato per supportare concorrenza

Dettagli

Generalita' sui Thread

Generalita' sui Thread Generalita' sui Thread Un thread (o processo leggero) è una attività, descritta da una sequenza di istruzioni, che esegue indipendentemente da altre, all'interno del contesto di esecuzione di un programma.

Dettagli

19. Introduzione al multi-threading

19. Introduzione al multi-threading 19. Introduzione al multi-threading Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II I thread I thread, o processi

Dettagli

GESTIONE DEI PROCESSI

GESTIONE DEI PROCESSI Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA9 B3.1 Mutua esclusione 1 Prerequisiti Programmazione concorrente Sezione critica Mutua esclusione lock() e unlock() 2 1 Introduzione Si considerino le seguenti situazioni

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 13 Alberto Ceselli ceselli@dti.unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 7 Maggio 2007 Outline Java e C# 1 Java

Dettagli

SISTEMI OPERATIVI. Sincronizzazione in Java (Java object lock e segnali wait-notify-notifyall)

SISTEMI OPERATIVI. Sincronizzazione in Java (Java object lock e segnali wait-notify-notifyall) SISTEMI OPERATIVI (MODULO DI INFORMATICA II) LABORATORIO Sincronizzazione in Java (Java object lock e segnali wait-notify-notifyall) Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) Università

Dettagli

Gestione dei thread in Java LSO 2008

Gestione dei thread in Java LSO 2008 Gestione dei thread in Java LSO 2008 Cos è un Thread? Si può avere la necessità di suddividere un programma in sottoattività separate da eseguire indipendentemente l una dall altra Queste sottoattività

Dettagli

: $. $ # % 9 ; / % <! = > ;!! " # $ % &! 8 - & $ 9 9 -! %!! " # $ % &!

: $. $ # % 9 ; / % <! = > ;!!  # $ % &! 8 - & $ 9 9 -! %!!  # $ % &! : $. $ # % 9 ; / % ;!! " # $ % &! Un thread (o processo leggero) è una attività, descritta da una sequenza di istruzioni, che esegue all'interno del contesto di esecuzione di un programma. Un thread

Dettagli

Thread. Java Thread. 1) come sottoclasse della classe Thread

Thread. Java Thread. 1) come sottoclasse della classe Thread Thread Java Thread Un thread (lightweight process) è un singolo flusso sequenziale di controllo all interno di un processo Due modalità per implementare thread in Java: 1. come sottoclasse della classe

Dettagli

Multi-threading. I programmi Java possono eseguire thread multipli in modalità di concorrenza logica. Come funziona il multi-threading?

Multi-threading. I programmi Java possono eseguire thread multipli in modalità di concorrenza logica. Come funziona il multi-threading? Multi-threading I programmi Java possono eseguire thread multipli in modalità di concorrenza logica. Esecuzione di fatto simultanea, dati condivisi. Come funziona il multi-threading? Per l utente, più

Dettagli

T 1. Per un processo con più thread di controllo, lo stato di avanzamento della computazione di ogni thread è dato da:

T 1. Per un processo con più thread di controllo, lo stato di avanzamento della computazione di ogni thread è dato da: Un thread (o processo leggero) è una attività, descritta da una sequenza di istruzioni, che esegue all'interno del contesto di esecuzione di un programma. Un thread procede nella sua esecuzione per portare

Dettagli

Programmazione Concorrente

Programmazione Concorrente Programmazione Concorrente Programmazione in Ambienti Distribuiti A.A. 2003-04 Programmi sequenziali Stack (Variabili locali) Stack pointer Istruzioni Heap (Oggetti) 2 1 Processi paralleli Processo 1 Processo

Dettagli

Esercizio Sincronizzazione Thread

Esercizio Sincronizzazione Thread Esercitazione di oratorio 17/10/2007 Esercizio Il laboratorio di Informatica del Polo Marzotto e utilizzato da tre tipi di utenti, studenti, tesisti e professori ed ogni utente deve fare una richiesta

Dettagli

Programmazione concorrente con il linguaggio Java

Programmazione concorrente con il linguaggio Java Programmazione concorrente con il linguaggio Java Thread, Mutua Esclusione e Sincronizzazione Alcuni aspetti architetturali e di prestazioni Concetto di thread Un thread è un flusso di esecuzione indipendente

Dettagli

Introduzione al Multithreading

Introduzione al Multithreading Introduzione al Multithreading Claudia Calidonna Istituto di di Cibernetica C.N.R. Argomenti principali Parleremo di : Processi & Threads Operazioni sui threads ed eventuali confronti tra operazioni sui

Dettagli

Java Virtual Machine

Java Virtual Machine Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina

Dettagli

I Thread in Java! parte 1!

I Thread in Java! parte 1! I Thread in Java! parte 1! 1 Thread Un thread è un singolo flusso sequenziale di controllo all interno di un processo(task) Un thread (o processo leggero) è un unità di esecuzione che condivide codice

Dettagli

Thread in Java. Linguaggi. Corso di Laurea in Ingegneria delle Telecomunicazioni A.A

Thread in Java. Linguaggi. Corso di Laurea in Ingegneria delle Telecomunicazioni A.A Linguaggi Corso di Laurea in Ingegneria delle Telecomunicazioni A.A. 2010-2011 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Thread in Java 1 Cos è un thread?

Dettagli

Lezione n.1. JAVA: Tasks e Threads. 22/9/2009 Vincenzo Gervasi

Lezione n.1. JAVA: Tasks e Threads. 22/9/2009 Vincenzo Gervasi Università degli Studi di Pisa Dipartimento di Informatica Lezione n.1 LPR-A-09 JAVA: Tasks e Threads 22/9/2009 Vincenzo Gervasi (basato su materiale di Laura Ricci e Marco Danelutto) Lezione U 1: JAVA

Dettagli

Sincronizzazione dei Thread in Java

Sincronizzazione dei Thread in Java 1) Sottoclasse della classe Thread Sincronizzazione dei Thread in Java Daniela Tibaldi: dtibaldi@deis.unibo.it Thread possiede un metodo run() che la sottoclasse deve ridefinire si crea un istanza della

Dettagli

Sincronizzazione dei Thread in Java. Daniela Tibaldi:

Sincronizzazione dei Thread in Java. Daniela Tibaldi: Sincronizzazione dei Thread in Java Daniela Tibaldi: dtibaldi@deis.unibo.it 1) Sottoclasse della classe Thread Thread possiede un metodo run() che la sottoclasse deve ridefinire si crea un istanza della

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA9 B3.2 Produttore-consumatore 1 Prerequisiti Elementi di programmazione concorrente Mutua esclusione Produttore-consumatore 2 1 Introduzione In questa Unità vediamo

Dettagli

Thread. Introduzione ai thread Modelli di programmazione I Thread di Java

Thread. Introduzione ai thread Modelli di programmazione I Thread di Java Thread Introduzione ai thread Modelli di programmazione I Thread di Java Thread Molti sistemi operativi forniscono il supporto per definire sequenze di controllo multiple all'interno di un singolo processo

Dettagli

"Programmazione Distribuita" - Prof. Scarano. Laurea in Informatica. A.A Università di Salerno 1. Organizzazione della lezione

Programmazione Distribuita - Prof. Scarano. Laurea in Informatica. A.A Università di Salerno 1. Organizzazione della lezione Lezione 8 Eccezioni e Thread Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Programmazione Distribuita. Vi.ttorio Organizzazione della

Dettagli

Lezione 8 Eccezioni e Thread

Lezione 8 Eccezioni e Thread Lezione 8 Eccezioni e Thread Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Le eccezioni motivazioni come

Dettagli

Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015

Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015 Multithreading in Java Fondamenti di Sistemi Informativi 2014-2015 Multithreading La programmazione concorrente consente di eseguire più processi o thread nello stesso momento. Nel secondo caso si parla

Dettagli

Programmazione Concorrente e Distribuita

Programmazione Concorrente e Distribuita Programmazione Concorrente e Distribuita Esame scritto del 10 Gennaio 2012 Versione C Esercizio 1 (5 punti) 1 public class Tenor extends S i n g e r { 2 public s t a t i c S t r i n g s i n g ( ) { 3 return

Dettagli

Programmazione Concorrente e Distribuita

Programmazione Concorrente e Distribuita Programmazione Concorrente e Distribuita Esame scritto del 22 Marzo 2012 Versione K Esercizio 1 (5 punti) Si consideri il codice seguente. 1 public c l a s s Redwood extends Tree { 2 public s t a t i c

Dettagli

I THREAD O PROCESSI LEGGERI

I THREAD O PROCESSI LEGGERI I THREAD O PROCESSI Processi (pesanti): LEGGERI entità autonome con poche risorse condivise (si prestano poco alla scrittura di applicazioni fortemente cooperanti) Ogni processo può essere visto come Immagine

Dettagli

Thread. Introduzione ai thread Modelli di programmazione I Thread di Java

Thread. Introduzione ai thread Modelli di programmazione I Thread di Java Thread Introduzione ai thread Modelli di programmazione I Thread di Java Thread Molti sistemi operativi forniscono il supporto per definire sequenze di controllo multiple all'interno di un singolo processo

Dettagli

Sistemi Operativi GESTIONE DEI PROCESSI. D. Talia - UNICAL. Sistemi Operativi 4.1

Sistemi Operativi GESTIONE DEI PROCESSI. D. Talia - UNICAL. Sistemi Operativi 4.1 GESTIONE DEI PROCESSI 4.1 Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in diversi S.O. 4.2 Concetto di

Dettagli

Introduzione. Java. Threads. Threads. G. Prencipe

Introduzione. Java. Threads. Threads. G. Prencipe Java concorrenza G. Prencipe prencipe@di.unipi.it Introduzione Un processo è un programma in esecuzione con un proprio spazio di indirizzi Un Sistema Operativo multitasking è in grado di eseguire diversi

Dettagli

Introduzione ai thread

Introduzione ai thread Introduzione ai thread Processi leggeri. Immagine di un processo (codice, variabili locali e globali, stack, descrittore). Risorse possedute: : (file aperti, processi figli, dispositivi di I/O..),. L immagine

Dettagli

Thread e Task. L20_MultiThread 2

Thread e Task. L20_MultiThread 2 I Thread in Java Thread e Task Multitasking: capacità dei sistemi operativi di eseguire più programmi contemporaneamente. Ciascun programma ha il proprio insieme di variabili, costanti, ecc. Multithreading

Dettagli

Processi e Thread. Walter Cazzola Dipartimento di Informatica e Comunicazione Università à degli Studi di Milano.

Processi e Thread. Walter Cazzola Dipartimento di Informatica e Comunicazione Università à degli Studi di Milano. Processi e Thread Processi e Thread: Il Caso Java. Walter Cazzola Dipartimento di Informatica e Comunicazione Università à degli Studi di Milano. e-mail: cazzola@disi.unige.it Walter Cazzola Processi e

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 0 (svolta) Multithreading in Java Luca Foschini Anno accademico 2009/2010 Esercitazione 0 1 Modello

Dettagli

5 Thread. 5 Thread. 5 Thread. Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni:

5 Thread. 5 Thread. 5 Thread. Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni: 1 Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni: codice del programma in esecuzione un area di memoria contenente le strutture dati dichiarate

Dettagli

Con il pulsante Start si introducono palline che rimbalzano in un area di disegno fino a che non è terminato il loro ciclo di vita (1000 movimenti).

Con il pulsante Start si introducono palline che rimbalzano in un area di disegno fino a che non è terminato il loro ciclo di vita (1000 movimenti). Rimbalzi. import java.awt.*; import java.awt.event.*; import java.applet.applet; public class Bounce extends Applet implements ActionListener { private Canvas canvas; private Button b1; private Button

Dettagli

Introduzione: i thread. Laboratorio di programmazione di rete Java Thread! Esempio di thread C (dato per scontato)

Introduzione: i thread. Laboratorio di programmazione di rete Java Thread! Esempio di thread C (dato per scontato) Introduzione: i thread Laboratorio di programmazione di rete Java Thread! Corso B Anno accademico 2007-2008 Prof. Marco Danelutto Assistente Dr.ssa Sonia Campa Concetto di thread (richiami di laboratorio

Dettagli

Thread. Introduzione ai thread Modelli di programmazione I Thread di Java

Thread. Introduzione ai thread Modelli di programmazione I Thread di Java Thread Introduzione ai thread Modelli di programmazione I Thread di Java Thread Molti sistemi operativi forniscono il supporto per definire sequenze di controllo multiple all'interno di un singolo processo

Dettagli

Sistemi Operativi. Lezione 3 Processi e Thread

Sistemi Operativi. Lezione 3 Processi e Thread Sistemi Operativi Lezione 3 Processi e Thread Introduzione Sino ai sistemi batch, di prima generazione, la CPU di un sistema svolgeva un attività, la portava a termine e solo allora avviava un altra attività

Dettagli

SISTEMI OPERATIVI THREAD. Giorgio Giacinto Sistemi Operativi

SISTEMI OPERATIVI THREAD. Giorgio Giacinto Sistemi Operativi SISTEMI OPERATIVI THREAD 2 Motivazioni» Un programma complesso può eseguire in modo concorrente più funzioni attraverso la creazione e gestione di processi figli attraverso il meccanismo dei thread» La

Dettagli

Esercizio sul Monitor in Java. 18 maggio 2011

Esercizio sul Monitor in Java. 18 maggio 2011 Esercizio sul Monitor in Java 18 maggio 2011 1 Il Bar dello Stadio In uno stadio e` presente un unico bar a disposizione di tutti i tifosi che assistono alle partite di calcio. I tifosi sono suddivisi

Dettagli

Laboratorio di Sistemi Thread Java

Laboratorio di Sistemi Thread Java Premessa Fare più di una cosa contemporaneamente per noi è una cosa piuttosto comune. La vita quotidiana è piena di esempi che ci possono chiarire il significato dell'avverbio contemporaneamente. Ad esempio

Dettagli

Programmazione Concorrente e Distribuita

Programmazione Concorrente e Distribuita Programmazione Concorrente e Distribuita Esame scritto del 27 Agosto 2012 Versione AA Esercizio 1 (5 punti) 1 class A{ 2 S t r i n g s ; 3 4 A( S t r i n g s ){ 5 this. s = s ; 6 System. out. p r i n t

Dettagli

Sincronizzazione con Java

Sincronizzazione con Java Sincronizzazione con Java Corse critiche e sincronizzazione Java implementa un meccanismo simile al monitor per garantire la sincronizzazione fra thread Ogni oggetto ha un lock associato ad esso Nelle

Dettagli

Inizializzare oggetti

Inizializzare oggetti Inizializzare oggetti Uso della Classe Software per TLC - AA 2008/2009 1 Costruttori e polimorfismo Uso della Classe Un codice migliore Software per TLC - AA 2008/2009 2 Costruttori ed Ereditarietà Output:

Dettagli

Programmazione di Reti Corso B. 22 Febbraio 2016 Lezione 1(a)

Programmazione di Reti Corso B. 22 Febbraio 2016 Lezione 1(a) Programmazione di Reti Corso B 22 Febbraio 2016 Lezione 1(a) Contatti Alina Sirbu alina.sirbu@unipi.it Stanza 331 DO Lunedì 11:00-13:00 su appuntamento Alessandro Lulli lulli@di.unipi.it Lezioni Martedì

Dettagli

Thread THREAD IN JAVA. Un thread (lightweight process) è un singolo flusso sequenziale di controllo all interno di un processo

Thread THREAD IN JAVA. Un thread (lightweight process) è un singolo flusso sequenziale di controllo all interno di un processo THREAD IN JAVA Come si può realizzare il concetto di Thread in Java? NEL MODO PIU' NATURALE! Sono oggetti particolari ai quali si richiede un servizio (chiamato start()) corrispondente al lancio di una

Dettagli

Esercizi sul Monitor in Java. 22 Maggio 2015

Esercizi sul Monitor in Java. 22 Maggio 2015 Esercizi sul Monitor in Java 22 Maggio 2015 1 Il Bagno del Ristorante Si consideri la toilette di un ristorante. La toilette è unica per uomini e donne. Utilizzando Java, si realizzi un'applicazione concorrente

Dettagli

INTRODUZIONE AL MECCANISMO DEI THREAD DI JAVA

INTRODUZIONE AL MECCANISMO DEI THREAD DI JAVA INTRODUZIONE AL MECCANISMO DEI THREAD DI JAVA Java mette a disposizione la classe Thread e l interfaccia Runnable per consentire l'implementazione di tipi thread definiti dall'utente. In entrambi i casi,

Dettagli

Programmazione Concorrente e Distribuita

Programmazione Concorrente e Distribuita Programmazione Concorrente e Distribuita Esame scritto del 19 Dicembre 2011 Versione A Esercizio 1 (5 punti) 1 class A{ 2 S t r i n g s ; 3 4 A( S t r i n g s ){ 5 this. s = s ; 6 System. out. p r i n

Dettagli