Telematica II 17. Esercitazione/Laboratorio 6



Documenti analoghi
GESTIONE DEI PROCESSI

Programmazione dei socket con TCP #2

Java Virtual Machine

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti

RMI Remote Method Invocation

Java threads (2) Programmazione Concorrente

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 Outline

Introduzione alle applicazioni di rete

Ottava Esercitazione. introduzione ai thread java mutua esclusione

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Multithreading in Java. Fondamenti di Sistemi Informativi

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

19. Introduzione al multi-threading

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Oggetti Lezione 3. aspetti generali e definizione di classi I

Algoritmi di Ricerca. Esempi di programmi Java

Telematica II 12. Esercitazione/Laboratorio 4

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

Permessi Android Mobile Programming Prof. R. De Prisco

Inizializzazione, Assegnamento e Distruzione di Classi

Gruppi di Thread. Java threads (3) Gruppi di thread e Timer. Operating Systems. Operating Systems. Java threads 3. Java threads 3

Programmazione A.A Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII)

Soluzione dell esercizio del 2 Febbraio 2004

Progettazione : Design Pattern Creazionali

Gestione del processore e dei processi

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

Modulo 4: Ereditarietà, interfacce e clonazione

Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012

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

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Corso di Informatica

MODULO 02. Iniziamo a usare il computer

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

appunti delle lezioni Architetture client/server: applicazioni server

Java: Compilatore e Interprete

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Programmazione a Oggetti Lezione 10. Ereditarieta

Programmazione Orientata agli Oggetti in Linguaggio Java

Pronto Esecuzione Attesa Terminazione

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Il Sistema Operativo (1)

Programmazione in Java Parte I: Fondamenti

Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Programmazione Java Avanzata Concetti su Java

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Capitolo 5: I thread

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

Concetto di Funzione e Procedura METODI in Java

Il software. Capitolo 3 La potenza non è nulla senza il software. Informatica di Base -- R.Gaeta 1

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E

MODULO 02. Iniziamo a usare il computer

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Un esercizio d esame. Flavio De Paoli

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Esercitazione n 4. Obiettivi

Database e reti. Piero Gallo Pasquale Sirsi

Programmare in Java. Olga Scotti

Il database management system Access

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

Corso di Informatica

Parte II: Reti di calcolatori Lezione 10

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

13. Chain of Responsibility

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

Segreteria Online esami istruzioni per gli studenti

Scrivere un programma in Java

Prenotazione degli Appelli d esame Online. Guida Studenti alla Prenotazione degli Appelli d esame Online. Redatto dalla Segreteria Studenti

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server

RMI. Java RMI RMI. G. Prencipe

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Socket & RMI Ingegneria del Software - San Pietro

Università per Stranieri di Siena

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Parola chiave extends

Programmazione ad oggetti

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Gestione della memoria centrale

esercizi Esercizi / problemi

Università di L Aquila Facoltà di Biotecnologie Agro-alimentari

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Lezione 1 Introduzione

Transcript:

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 un processo = un programma che sta girando nel suo spazio di indirizzamento multitasking piu di un programma sta girando in maniera concorrente (p.e. UNIX, Windows) sembra come se piu programmi stiano girando allo stesso tempo Corso di Laurea in Ingegneria Informatica A.A. 2009-2010 2 Semestre Multithreading un thread è una singola sequenza in esecuzione all interno di un programma il multithread si riferisce a thread multipli controllati all interno di un singolo programma ciascun programma puo far girare thread multipli in ciascuno di essi (p.e. Web Browser) Prof. Giovanni Pascoschi 2 Concorrenza e Parallelismo multitasking Threads e processi multithreading CPU CPU1 CPU2 CPU main run Processo 1 Processo 2 Processo 3 Processo 4 GC il S.O. assegna la CPU a programmi differenti in maniera da dare l impressione della concorrenza il multi-thread estende l idea del multi-tasking applicandola a programmi singoli per ottenere di apparire come se fossero task multipli ciascun task è chiamato thread 3 4

A che servono i thread? Thread in un applicazione JAVA : fasi per mantenere la possibilità di rispondere da parte di un applicazione durante un task che deve funzionare per molto tempo (p.e. che esegue istruzioni sospensive accept(), readline()) per permettere l interruzione di task separabili alcuni problemi sono intrisecamente paralleli e quindi implementabili con i thread (p.e. task di acquisizione dati e task di elaborazione dati) quando viene eseguita un applicazione JAVA (.class): la JVM crea un oggetto Thread il cui compito (task) e definito dal metodo main( ) la JVM fa quindi partire il thread il thread esegue le istruzioni del programma una per una al termine dell esecuzione di tutte le istruzioni, il metodo ritorna e il thread muore per monitorare lo stato di alcune risorse in parallelo (p.e. nei database) 5 i thread possono essere richiesti esplicitamente da alcune API (Application Program Interface) 6 Thread multipli in un applicazione Creazione dei thread in JAVA ciascun thread ha il suo stack a run-time privato se due thread eseguono lo stesso metodo, ciascun thread avra la sua propria copia di variabili locali che i metodi usano tutti i thread vedono la stessa memoria dinamica due differenti thread possono agire sullo stesso oggetto e gli stessi campi statici in maniera concorrente JAVA nasce intrinsecamente con le funzionalita del multithreading esistono due modi di creare un oggetto di tipo Thread derivando la classe Thread e istanziando un nuovo oggetto di questa classe (permette di ridefinire alcuni metodi originari di Thread) implementando l interfaccia Runnable (permette di bypassare l impossibilita di usare l ereditarieta multipla) in entrambi i casi dovra essere implementato il metodo run( ) 7 8

Classe Thread Metodi della classe Thread #1 la classe Thread fa parte del package java.lang usando un oggetto di questa classe, il thread corrispondente puo essere fermato, messo in pausa e riattivato esistono molti costruttori quelli piu importanti sono: Thread( String n) crea un nuovo Thread con il nome n Thread( Runnable target) crea un nuovo oggetto Thread void start( ) crea un nuovo thread e lo rende di tipo runnable (ossia che puo essere eseguito) questo metodo puo essere richiamato solo una volta con l esecuzione di start() vien fatto partire il metodo run() del thread stesso void run( ) il nuovo thread inizia la sua vita all interno di questo metodo void stop( ) (deprecated) il thread viene terminato 9 10 Metodi della classe Thread #2 Derivazione della classe Thread void yield() obbliga l oggetto thread correntemente in esecuzione a fermarsi temporaneamente e permettere l esecuzione di altri thread consente soltanto a threads della stessa priorita di essere eseguiti void sleep(int m) o sleep(int m, int n) il thread si addormenta per m millisecondi piu n nanosecondi public class ThreadExample extends Thread { public void run () { for (int i = 1; i <= 100; i++) { System.out.println( - -- ); 11 12

Implementazione di Runnable Esempio di utilizzo dei Threads public class RunnableExample implements Runnable { public void run ( ) { for (int i = 1; i <= 100; i++) { System.out.println ( *** ); public class ThreadsStartExample { public static void main (String argv[ ]) { new ThreadExample( ).start (); new Thread(new RunnableExample()).start (); 13 14 Esercitazione 9 Thread in JAVA Esercitazione 10 Server TCP Multi-Thread in JAVA Viene illustrato un esercizio ThreadTest sulla gestione dei thread in JAVA (esercitazione 5FS) Viene illustrato un esercizio MultiTCPServer su un server TCP multi-thread in JAVA (esercitazione 12FS) 15 16

Riepilogo della lezione Fine della lezione Esercitazione/Laboratorio 6 Gestione Thread in JAVA Server TCP multi-thread Domande? 17 18 Esercizio n.15 Modalità iscrizione/effettuazione appelli luglio 2010 Implementare l esercizio n.9 modificando il server per essere adatto ad accettare richieste da piu client contemporaneamente (multi-thread). tutte le prenotazioni devono essere effettuate via email con indicazione Cognome, Nome, Matricola e sessione di esame a info@primeeng.it prenotazione allo scritto (data ultima) sessione del 8 luglio 2010 5 luglio 2010 sessione del 20 luglio 2010 17 luglio 2010 effettuazione orale/presentazione progetto circa una settimana dopo lo scritto invio email da parte dello studente per confermare come voto finale quello ottenuto allo scritto, oppure la partecipazione all orale 2 giorni dopo la pubblicazione degli esiti della prova scritta invio del progetto entro il 5 luglio 2010 per la 1 sessione invio del progetto entro il 17 luglio 2010 per la 2 sessione 19 20