Multithread e multitasking
|
|
- Agnolo Innocenti
- 5 anni fa
- Visualizzazioni
Transcript
1 Organizzazione della lezione Lezione 7 Thread e Riflessione Vittorio Scarano Corso di Programmazione Distribuita ( ) Laurea di I livello in Informatica Università degli Studi di Salerno I thread motivazioni stati e transizioni priorità e gruppi La riflessione: il package java.lang.reflect il problema dei contenitori le interfacce Marker Cosa si può chiedere ad una classe? Un metodo generico 2 Sistemi operativi multitasking Multithread e multitasking Permettono di creare la illusione (per l utente) di una macchina completamente dedicata ma durante la interazione dell utente con il proprio programma, il S. O. ha il tempo di servire altri utenti Multitasking cooperativo (sospensione dei task volontaria) Windows 3.11 e Mac OS 9 con preemption (sospensione dei task forzata) Unix/Linux, Windows NT, Windows 2000/XP, Mac OS X Estensione del multithread riferita ad un singolo programma in grado di eseguire più thread contemporaneamente Thread: anche detti processi light-weight a differenza dei processi hanno a disposizione e condividono gli stessi dati fonte di possibili problemi ma strumento efficace per costruire programmi che necessitano di svolgere in parallelo più compiti 3 4
2 Tipiche applicazioni multi-thread thread (1) Tipiche applicazioni multi-thread thread (2) Un browser che, allo stesso tempo, deve poter caricare dal server diverse immagini che sono nella stessa pagina visualizzare la pagina così come arriva reagire all eventuale pulsante di stop premuto dall utente Una applicazione di rete che, allo stesso tempo, deve chiedere dati ad una altra applicazione fornire dati a chi li richiede tenere informato l utente dell andamento delle operazioni Server che hanno bisogno di istanziare velocemente oggetti: vengono istanziati tutti insieme come un pool di oggetti Thread tenuti in stato sospeso e riportati (velocemente) alla vita quando necessario Applicazioni che devono monitorare eventi importanti: arrivo di mail apertura/disponibilità di un file arrivo di dati 5 6 I thread Un esempio di Thread (1) Java è un linguaggio multithreaded Classe i thread sono oggetti con un nome, un gruppo, una priorità, un tipo, uno stato derivati da oppure si usa la interface ed in questo caso l oggetto va passato al costruttore di Thread Si può lanciare un thread t (eseguire t.start() che esegue il suo metodo run) mettere in sleep (per un certo tempo) sospendere / resume 7 class Conta implements Runnable public Conta (String nom, int lim, int sleep) limite = lim; nome = nom; sleeptime = sleep; public void run () for (int i=0;i<limite; i++) try Thread.sleep(sleeptime); catch (Exception ex) System.out.println (nome+":"+i+"."); private int limite; private String nome; private int sleeptime; Conta fino a lim fermandosi sleeptime ms Costruttore Metodo run chiamata a Thread.sleep necessario fare il catch 8
3 Un esempio di Thread (2) Gli stati di un thread public class Runner public static void main (String args[]) Thread t1=new Thread (new Conta("1",5,300)); Thread t2=new Thread (new Conta("2",5,100)); t1.start(); t2.start(); Istanzio due thread e li lancio $ java Runner 2:0 2:1 1:0 2:2 2:3 1:1 2:4 1:2 1:3 1:4 9 Un thread si può trovare in uno di 4 stati new: appena creato: il programma non è stato eseguito ancora runnable: quando si invoca il metodo start() il thread è eseguibile in effetti la sua esecuzione dipende da JVM e dal S.O. blocked: quando viene chiamato il suo metodo sleep(), sta facendo I/O bloccante, chiama il metodo wait() dead: quando viene chiamato il metodo stop(), o si verifica una eccezione non catturata 10 Le transizioni possibili di un Thread Un thread runnable diventa blocked new dead start runnable stop / uscita metodo run sleep suspend resume wait notify I/O bloccante I/O completato attesa blocco / blocco disponibile blocked 11 Quando si chiama il metodo del thread Quando si chiama il metodo del thread operazione deprecated Il thread chiama Il thread chiede una operazione di I/O bloccante Il thread cerca di bloccare un oggetto già bloccato new dead start runnable stop / uscita metodo run sleep suspend resume wait notify blocked I/O bloccante I/O completato attesa blocco / blocco disponibile 12
4 Un thread blocked diventa runnable Priorità dei thread (1) I millisecondi specificati dalla chiamata di sono passati Quando si chiama il metodo del thread operazione deprecated Quando si chiama Il thread ha terminato una operazione di I/O bloccante Un oggetto che il thread cerca di bloccare è disponibile al blocco new dead start runnable stop / uscita metodo run sleep suspend resume wait notify blocked I/O bloccante I/O completato attesa blocco / blocco disponibile Ogni thread ha una priorità assegnabile con compresa tra MIN_PRIORITY (1) e MAX_PRIORITY (10) Quando deve essere eseguito un thread, viene eseguito quello con priorità massima (o uno tra di loro) scelta dipendente dalla implementazione della JVM Un thread al massimo valore di priorità viene eseguito fino a quando: chiama il metodo cessa di essere runnable (può essere dead o blocked) un thread a priorità maggiore è runnable Priorità dei thread (2) Il problema dell accesso concorrente In caso di task runnable con la stessa priorità, uno è scelto a caso ed eseguito La associazione priorità JVM e priorità macchina host è dipendente dalla piattaforma i 10 livelli di priorità della JVM sono assegnati (in una qualche maniera) ai livelli di priorità della piattaforma host Questo significa che si può verificare che un thread con priorità JVM 4 potrebbe essere eseguito prima di un thread con priorità JVM 5 in quanto entrambi i livelli sono associati allo stesso livello di thread della piattaforma host Non basarsi troppo sulle priorità! 15 E possibile rendere synchronized metodi o oggetti (risorse): viene assicurato che solamente un thread starà eseguendo quella porzione di codice in un dato momento. Per i metodi: Per gli oggetti (risorse): synchronized metodo ()... synchronized (x) x = x + 1; 16
5 Un esempio di sincronizzazione sui singleton Singleton Un singleton è una classe dalla quale si può istanziare solamente un oggetto Importante nella gestione di spool di stampa manager di connessione a database gestore di servizi su rete Un esempio di uso di due tecniche: costruttore metodo statico sincronizzato public class Singleton public static synchronized Singleton getinstance() if (instance == null) instance = new Singleton(); return instance; private Singleton (). private static Singleton instance; Restituisce l unica instance attiva Costruttore privato può essere chiamato solamente dall interno della classe Metodo statico sincronizzato blocca cioè tutti i metodi statici sincronizzati della classe! Gruppi di Thread Organizzazione della lezione String tname= gruppo : ThreadGroup g = new ThreadGroup(tName);.. Thread t = new Thread (g, Tizio ); String sname= sottogruppo : ThreadGroup s = new ThreadGroup(g, sname); Thread u = new Thread (g, Caio ); if (g.activecount() == 0). g.interrupt();.. s.interrupt(); Per categorizzare un pool di thread Crea un gruppo Aggiunta di un thread Tizio Crea un sottogruppo di g Aggiunta di un thread Caio al sottogruppo Conta i thread nel gruppo compresi i sottogruppi Interrompi tutti i thread solo quelli di s 19 I thread motivazioni stati e transizioni priorità e gruppi La riflessione: il package java.lang.reflect il problema dei contenitori le interfacce Marker Cosa si può chiedere ad una classe? Un metodo generico 20
6 Cosa è la Reflection Informazioni a Run Time Una estensione del linguaggio che permette al codice Java di fare introspezione e cioè determinare tipo e informazioni sui metodi di oggetti e classi Obiettivi: permettere alla applicazione di evolvere nel tempo mantenendo la necessaria coesione tra oggetti con un linguaggio fortemente tipizzato come Java La forma più semplice di reflection: trovare il tipo di un oggetto if (g instanceof Graphics2D) if ((Graphics2D.class).isInstance(instanceObject)) if (g.getclass() == Graphics2D.class) Il problema dei contenitori ed i markers Le interfacce Marker: un idioma utile Utili per Codice ArrayList/Vector Metto dentro un oggetto Triangle Codice Ottengo un Object if (object instanceof Triangle) // ok, posso trattarlo gestire contenitori e costruire partizioni degli oggetti in esso contenuti Costruire coppie interfaccia/implementazione Obiettivo: usare le sottoclassi per codificare informazioni di tipo LeadSoldier ToySoldier PlasticSoldier LeadSoldierImpl ToySoldierImpl PlasticSoldierImpl 23 24
7 Le interfacce come Marker Una applicazione di esempio public interface LeadSoldier extends ToySoldier // vuota public class LeadSoldierImpl extends ToySoldierImpl // tutto il codice qui implements LeadSoldier // pochissimo codice qui public boolean areallsoldierslead(vector toybox) Iterator i = toybox.iterator(); while(i.hasnext()) ToySoldier toysoldier = (ToySoldier) i.next(); // funziona sempre if (toysoldier instanceof PlasticSoldier) return false; return true; 25 Un negozio di noleggio videocassette (BlockBuster?) Prima soluzione: una classe Film dalla quale istanzio oggetti (Terminator, Star Wars, etc.) Alcuni svantaggi: tutte le copie delle videocassette di Star Wars hanno molti dati in comune (nome film, nome attori, produttori, etc.) quindi tutte le istanze conterranno una quantità di dati duplicati Ci sono altre soluzioni? 26 Una altra soluzione: Informazioni a run-time! Creare una classe Tape Non possiamo usare una API predefinita Derivare da questa: la classe TerminatorTape con tutti i dati comuni al film, statici la classe StarWarsTape con tutti i dati comuni al film, statici Un problema (ovvio!) arriva un nuovo film! devo forse aggiungere la sottoclasse VacanzeDiNatale43 e ricompilare il tutto???? vogliamo che il nostro programma si evolva in maniera graduale così come si evolvono le necessità del sistema Possiamo usare la capacità di Java di caricare le classi dinamicamente aggiungendo un file.class nel classpath questa classe può essere accessibile senza dover ricompilare Tipico utilizzo: prevedere una directory di estensioni nel programma 27 28
8 L esempio di gestione dinamica La directory di estensioni private class GetTape implements ActionListener public void actionperformed(actionevent e) String classname = _tapepackagename+_tapename.gettext(); try Class cls = Class.forName (classname); if ((Tape.class).isAssignableFrom(cls)) _responsearea.settext("we ordered a copy of that tape just for you!"); else _responsearea.settext("hey man, that's not a tape!"); catch(exception ee) _responsearea.settext("that tape doesn t exist!"); return; Le classi che permettono la reflection Chiedere a una classe Parla di te chi sei, da dove vieni,, dove vai.. : e : e Cosa fare se: si ha una istanza di una classe usa JHW&ODVV per ottenere la classe si ha una classe usa i metodi seguenti per ottenere accesso alla descrizione si ha un costruttore, campo o metodo usa MDYDODQJPRGLILHU per controllarne le caratteristiche 31 Class[ ] getclasses() ; Class getdeclaringclass() ; Class[ ] getdeclaredclasses() ; Class[ ] getinterfaces() ; Class getsuperclass() ; boolean isassignablefrom(class cls) ; boolean isinstance(object obj) ; boolean isarray() ; Class getcomponenttype() ; boolean isinterface(); boolean isprimitive() ; int getmodifiers(); Object newinstance() ; Informazioni sulla classe E un array? E di cosa? Alcune domande semplici Chiama il costruttore semplice 32
9 I membri di una classe Metodo Metodo generico (1) Constructor getdeclaredconstructor(class[ ] parametertypes) ; Tutto Constructor[ ] getdeclaredconstructors() ; Constructor getconstructor(class[ ] parametertypes); Solo quanto è pubblico Constructor[ ] getconstructors(); Field getdeclaredfield(string name) ; Field[ ] getdeclaredfields() ; Field getfield(string name) ; Field[ ] getfields() ; Method getdeclaredmethod(string name, Class[ ] parametertypes) ; Method[ ] getdeclaredmethods() ; Method getmethod(string name, Class[ ] parametertypes) ; Method[ ] getmethods() ; 33 public static String tostring(object obj) Class cl = obj.getclass(); String r = cl.getname(); do r += [ ; Field[ ] fields = cl.getdeclaredfields(); AccessibleObject.setAccessible(fields, true); for (int i =0; i < fields.length; i++ Field f = fields[i]; r += f.getname() + = ; try Object val = f.get(obj) if (val!=null) r += val.tostring(); catch (Exception e). if (i < fields.length-1) r + =, ; // continua object come parametro Ottiene la classe dell oggetto ed il suo nome Per ogni classe e superclasse ottieni i campi rendili leggibili per ogni campo stampa campo e valore con tostring() separatore 34 Metodo Metodo generico Alcuni commenti finali // ancora nel do while r += ] ; cl = cl.getsuperclass(); while (cl!= Object.class); return r; Al termine della stampa di una classe chiudi la parentesi quadra Preleva la superclasse successiva e ripeti Fino a quando non hai raggiunto la classe Object Restituisce la stringa calcolata come risultato RTTI = Run-time Type Information I have heard this (bad use of RTTI) described as the syntactic elegance of C combined with the run-time efficiency of Smalltalk, but that is really too kind. Stroustrup, from The Design and Evolution of C++ The only words for what you re doing in that piece of code are Abomination unto the Lord. Every time I use Reflection, I wind up ripping it out once I figure out what I really want the code to do 35 36
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
Dettagli8. 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 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
DettagliLezione 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
DettagliI 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
DettagliI 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
DettagliRTTI Run-time type identification
RTTI Run-time type identification Come determinare il tipo di un oggetto durante l'esecuzione RTTI 1 Ereditarietà Forma Linea Rettangolo Cerchio interface Forma { class Linea implements Forma { void ;
DettagliJava 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à
DettagliEsercitazione 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
DettagliEsercitazione 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
DettagliJava 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
DettagliEccezioni 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
DettagliThread 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
DettagliMultitheading. 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
DettagliCorso 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
DettagliIntroduzione. Java RTTI RTTI. Il run-time type identification è quella parte di Java che si occupa di controllare i tipi a runtime
Java riconoscere i tipi G. Prencipe prencipe@di.unipi.it Introduzione Il run-time type identification è quella parte di Java che si occupa di controllare i tipi a runtime In particolare determina il tipo
DettagliJava 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
DettagliJava: loading dinamico e reflection
Java: loading dinamico e reflection Scopo del corso integrativo: Presentare le caratteristiche avanzate di Java che lo rendono un linguaggio molto flessibile pur senza rinunciare ai vantaggi di un typechecking
DettagliConcorrenza 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
Dettagli19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
DettagliOCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER
DettagliThreads in Java. I threads. Costruttori. Prof.ssa Sara Michelangeli
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
DettagliTHREAD. 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
DettagliCorso 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
DettagliSISTEMI 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
DettagliMultithreading/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
DettagliJava 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
DettagliMultithreading. 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
DettagliProgrammazione 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
DettagliCorso 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
DettagliProva d Esame Compito A
Prova d Esame 19.04.2005 Compito A Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private int counter;
DettagliProgrammazione 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
DettagliEsercizi 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
DettagliProcessi 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,
DettagliProcessi 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
DettagliProgrammazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals()
Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Ereditarietà (Inheritance) RIASSUMIAMO DALLA SCORSA
DettagliProgrammazione 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
DettagliPROVA FINALE Ingegneria del software
PROVA FINALE Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Laboratorio N 6 Cosa faremo oggi 2 Comunicazione RMI Comunicazione RMI Multi-Thread Remote Method Invocation 3 L obiettivo è di
DettagliSistemi 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
DettagliEsercizio 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
DettagliGESTIONE DEGLI ERRORI
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori
DettagliThreads. 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
DettagliGESTIONE DEGLI ERRORI
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori
DettagliTelematica 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
DettagliJava 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
DettagliCome 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.
DettagliCorso 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
DettagliTHREAD 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
DettagliUniversità degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002. Sistemi Operativi Corsi A e B.
Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Sistemi Operativi Corsi A e B Esercitazione 15 Il problema dello Sleeping Barber E dato un salone di barbiere,
Dettagli24 - Possibili approfondimenti
24 - Possibili approfondimenti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliUguaglianza e copia di oggetti
Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La
DettagliCorso 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
DettagliReflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010
Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Reflection in Java 1 Reflection Riflessione
DettagliMultithreading 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)
DettagliOCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER
DettagliSISTEMI 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à
DettagliProblema del buffer limitato. Lorenzo Gallucci
Problema del buffer limitato Lorenzo Gallucci Buffer limitato Immaginiamo una struttura dati che contiene delle informazioni La struttura può, in ogni momento, avere dello spazio libero oppure no Se vi
DettagliCorso 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
DettagliConcetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica Introduzione Ereditarietà in Sintesi È uno dei concetti chiave della programmazione orientata agli
DettagliEsercitazione 15. Il problema dello Sleeping Barber
Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Sistemi Operativi Corsi A e B Esercitazione 15 Il problema dello Sleeping Barber E dato un salone di barbiere,
DettagliProgrammazione 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
DettagliLab 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
DettagliProgrammazione 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
DettagliProgrammazione a Oggetti Lezione 11. Eccezioni e Packages
Programmazione a Oggetti Lezione 11 Eccezioni e Packages Sommario Eccezioni Sollevamento Cattura Trattamento Packages e visibilità Eccezioni I programmi spesso si trovano ad operare in condizioni anomale:
DettagliJAVA - I/O System. Il JAVA considera tutte i flussi da e verso l esterno, come stream di byte. Questi possono essere di ingresso o di uscita:
JAVA - I/O System Il JAVA considera tutte i flussi da e verso l esterno, come stream di byte. Questi possono essere di ingresso o di uscita: 1. InputStream: Flusso di byte in ingresso. Con questa classe
DettagliIl problema è trovare un modo nel quale gli eventi dell oggetto di riferimento, siano comunicati a tutti gli altri interessati.
Observer 129 19. Observer (GoF pag. 293) 19.1. Descrizione Consente la definizione di associazioni di dipendenza di molti oggetti verso di uno, in modo che se quest ultimo cambia il suo stato, tutti gli
DettagliProva d Esame Compito A
Prova d Esame 19.07.2005 Compito A Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private int counter;
DettagliEsempi in Java di program.ne O-O
Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico
Dettagli18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di
DettagliI 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
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 7 (svolta) Java RMI e Riferimenti Remoti Un RMI Registry Remoto Luca Foschini Anno accademico 2018/2019
DettagliThread 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
DettagliScope e visibilità per classi
Scope e visibilità per classi Packages Classi interne nelle loro diverse forme Interne / statiche / locali Utilizzo congiunto con interfacce Implementazione di iteratori Gestione di eventi Classi interne
DettagliGestione 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à
DettagliCorso di Progettazione del Software
T. Mancini & M. Scannapieco S.JOO.3 Java: le classi Object e Class February 2, 2008 p. 1/12 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Corso
Dettagli18 - Classi parzialmente definite: Classi Astratte e Interfacce
18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
Dettagli17 - Classi parzialmente definite: Classi Astratte e Interfacce
17 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliEsercizio: Lista Circolare
Esercizio: Lista Circolare Si realizzi in Java un gestore di una lista circolare. La dimensione minima della lista è 2 elementi (ed è anche la dimensione iniziale). La dimensione massima è 20 elementi.
DettagliCapitolo 7 Un primo sguardo agli oggetti Schema e valori Elementi di classe e d istanza
I Sommario Prefazione xiii Capitolo 1 Introduzione alla programmazione 1 1.1 Hardware e software......................... 1 1.2 La programmazione......................... 4 1.2.1 I paradigmi di programmazione...............
DettagliProgrammazione 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
Dettagli7. Java: Programmazione generica
7. Java: Programmazione generica Vittorio Scarano Algoritmi e Strutture Dati: Sistemi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno Organizzazione della lezione La classe
DettagliPolimorfismo parametrico vs polimorfismo per inclusione
Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico
DettagliEreditarietà (ultima)
Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction...
DettagliEreditarietà (ultima)
Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction
DettagliProgrammazione 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
DettagliRiassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.
OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione,
DettagliRETI DI CALCOLATORI Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Eccezioni Prof. Franco Zambonelli Lucidi realizzati in collaborazione
DettagliProgrammazione ad Oggetti. Java Parte II
Programmazione ad Oggetti Java Parte II Overview Caratteristiche lessicali Il primo programma Java 1 Commenti /* Commento tradizionale, eventualmente su più linee, non nidificato */ // Commento su di una
DettagliUniversità degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002. Sistemi Operativi Corsi A e B. Esercitazioni 7 e 8
Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Corsi A e B Esercitazioni 7 e 8 Bounded Buffer con sincronizzazione Java (1) public class BoundedBuffer private
DettagliInsegnamento di Laboratorio di algoritmi e strutture dati
Insegnamento di Laboratorio di algoritmi e strutture dati Roberto Posenato ver. 0.6, 31/01/2008 1 / 25 Si comincia... 1 Esigenza... Definizione Tipi di eccezioni Sollevare eccezioni Gestire le eccezioni
DettagliOCA JAVA 8 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 8 SE PROGRAMMER
DettagliCorso 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
DettagliProgrammazione orientata agli oggetti La classe Object, metodi e classi final, this. Object
Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza
DettagliOrganizzazione della lezione. Invocazione remota di metodi fai-da-te. Lezione 12 Introduzione a Remote Method Invocation
Organizzazione della lezione Lezione 12 Introduzione a Remote Method Invocation Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi
DettagliLaboratorio 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
DettagliProgrammazione orientata agli oggetti La classe Object, metodi e classi final, this. Object
Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza
Dettagli