JAVA Gestione delle eccezioni e Programmazione concorrente
|
|
- Mattia Pepe
- 6 anni fa
- Visualizzazioni
Transcript
1 JAVA Gestione delle eccezioni e Programmazione concorrente Andrea BEI (andrea.bei@libero.it)
2 Gestione delle eccezioni Un eccezione è un evento generato in un applicazione in circostanze eccezionali (es: apertura di un file inesistente) In JAVA una eccezione generata può essere trattata in due modi: può essere catturata nel metodo che l ha generata provocando:» l interruzione dell esecuzione della parte del codice che l ha generata» l esecuzione di una parte di codice che ha la responsabilità di gestire l eccezione in modo pulito e consistente può essere propagata verso l alto nello stack di esecuzione dei metodi, cioè verso la parte di codice in cui è stato invocato il metodo che ha generato l eccezione. Se l eccezione è propagata anche dall ultimo metodo dello stack (il metodo main) viene catturata dal System Exception Handler della Java Virtual Machine che interrompe l esecuzione restituendo un messaggio di errore a Run-Time
3 Gestione delle eccezioni esempio tempo Metodo main: propaga tutte le eccezioni Metodo m1: cattura E1 propaga le altre Metodo m2: cattura E2 propaga le altre Metodo m3: propaga tutte le eccezioni E3 E3 E3 E3 E1 E1 E2
4 Gestione delle eccezioni: Generazione e Cattura La generazione di una eccezione viene fatta tramite il costrutto: throw <oggetto di tipo Throwable> Es: l applicazione abbandona l esecuzione emettendo un eccezione per esaurimento di memoria throw new Throwable( Troppi inserimenti effettuati ) La cattura di una eccezione avviene tramite il costrutto try/catch try try // parte di codice che if (X>MAX_VALUE) // può generare l eccezione throw new Throwable( X= +X); catch( Throwable E) catch (Throwable exc ) // parte di codice che System.out.println( Errore: + // gestisce l eccezione exc.getmessage() );
5 Gestione delle eccezioni:gerarchia Ogni eccezione in JAVA è descritta da un oggetto della classe throwable o di una sua sottoclasse: Throwable Exception Runtime Execption Arithmetic Exception Error IOException ETC. ETC. Le sottoclassi di Throwable rappresentano tipi specifici di eccezioni generabili dai metodi dichiarati nelle classi del JDK
6 Gestione delle eccezioni: la classe Throwable Definizione:Un oggetto di tipo Throwable è una eccezione o un errore Creazione: Throwable() Throwable( Messaggio che descrive l eccezione ) Metodi principali: getmessage() restituisce il messaggio associato all eccezione printstacktrace( stream ) restituisce una fotografia dello stack di esecuzione sull oggetto stream (PrintWriter o PrintStream) printstacktrace() restituisce una fotografia dello stack di esecuzione su stderr Es: try int a[] = new int[2]; a[4]=2; catch (Throwable e) System.out.println( Eccezione: " + e.getmessage()); e.printstacktrace();
7 Gestione delle eccezioni: la classe Throwable class oggetto1 // file: prova.java public void metodo1() try int a[]=new int[2]; a[4]=2; catch(throwable e) System.out.println("Eccezione: "+e.getmessage()); e.printstacktrace(); C:\jdk1.1>javac prova.java C:\jdk1.1>java prova Eccezione: java.lang.arrayindexoutofboundsexception: at oggetto1.metodo1(prova.java:6) at oggetto2.metodo2(prova.java:18) at prova.main(prova.java:25) C:\jdk1.1> class oggetto2 public void metodo2() oggetto1 o=new oggetto1(); o.metodo1(); class prova public static void main(string args[]) oggetto2 o2=new oggetto2(); o2.metodo2();
8 Gestione delle eccezioni: definizione di eccezioni proprie Il programmatore può definire delle proprie eccezioni nella gerarchia esistente con il meccanismo dell ereditarietà: Es: class Range_Error_Exception (String s) extends Throwable public Range_Error_Exception(String s) super(s); Una volta definite le eccezioni possono essere generate e catturate: Es: try if (X>MAX_VALUE ) throw new Range_Error_Exception( X= +X) catch (Range_Error_Exception exc) System.out.println( Errore di Range: +exc.getmessage());
9 Gestione delle eccezioni: propagazione Se l eccezione non è catturata deve essere propagata dal metodo che l ha generata ( altrimenti viene emesso un errore a tempo di compilazione ) per propagare una eccezione occorre inserire dopo la segnatura del metodo il costrutto: Throws <nome eccezione> Es: Class Funzioni public static boolean NumeroPrimo(long n) throws Range_Error_Exception if (n<0) throw new Range_Error_Exception( numero negativo! ); if (n%2==0) return false; long radice_di_n=(long) (Math.sqrt ( (double) n )) +1; for (long i=3; i<=radice_di_n;i+=2) if (n%i ==0) return false; return true
10 Gestione delle eccezioni: propagazione Propagare una eccezione significa demandare la sua gestione verso l alto nello stack di esecuzione. Ogni volta che si scrive l invocazione di un metodo si deve essere a conoscenza delle eccezioni che il metodo può generare per catturarle o propagarle. Le eccezioni generabili dai metodi del JDK sono documentate ( Es: Class Main public static void main(string argv[]) try System.out.println( I numeri primi da 20 a -1 sono: ); for(int i=20; i>=-1;i--) // il metodo NumeroPrimo può generare if (Funzioni.NumeroPrimo(i)) // Range_Error_Exception System.out.println(i); catch ( Range_Error_Exception exc) // che va catturata! System.out.println( Range_Error_Exception : + exc.getmessage());
11 Gestione delle eccezioni: propagazione C:\jdk1.1>javac Main.java C:\jdk1.1>java Main i numeri primi da 20 a -1 sono: Range_Error_Exception:numero negativo! C:\jdk1.1>
12 Gestione delle eccezioni: clausola finally La clausola finally situata dopo il blocco try o try/catch delimita una sezione di codice che deve essere eseguita a prescindere dall esito del try/catch o try. Es: Class Main public static void main(string argv[]) try System.out.println( I numeri primi da 20 a -1 sono: ); for(int i=20; i>=-1;i--) if (Funzioni.NumeroPrimo(i)) System.out.println(i); catch ( Range_Error_Exception exc) System.out.println( Range_Error_Exception : + exc.getmessage()); finally System.out.println( Comunque sia andata la lista è terminata );
13 Gestione delle eccezioni: un esempio completo import java.io.*; public class copia public static void main(string[] args) File inputfile = new File(args[0]); File outputfile = new File(args[1]); try FileReader in = new FileReader(inputFile); FileWriter out = new FileWriter(outputFile); BufferedReader inb=new BufferedReader(in); BufferedWriter outb=new BufferedWriter(out); int c; while ((c = inb.read())!= -1) outb.write(c); inb.close(); outb.close(); catch(filenotfoundexception exc) C:\jdk1.1>javac copia.java C:\jdk1.1>java copia input.txt output.txt file inesistente: input.txt C:\jdk1.1> System.out.println("file inesistente: "+exc.getmessage()); catch(ioexception exc) System.out.println("errore di input/output: "+exc.getmessage()); catch(throwable exc) System.out.println("errore inaspettato: "+exc.getmessage()); output
14 Programmazione concorrente La programmazione concorrente è un complesso di tecniche e strumenti (costrutti) che riguardano la realizzazione di applicazioni in cui diverse sezioni di codice sono eseguite simultaneamente L esecuzione di una di tali sezioni si chiama thread Una applicazione multithreading può generare una configurazione di thread simultanei rappresentabile da una struttura a grafo. Programmazione MonoThread Programmazione MultiThread Tempo Thread Main Thread 1 Thread Main Thread 2 INIZIO INIZIO FINE FINE
15 Programmazione concorrente: interazioni tra thread Le interazioni tra thread possono essere di 3 tipi: cooperazione (interazione prevedibile e desiderata ) si ha quando 2 o più thread comunicano dati tra loro. Es: un thread produce dati necessari ad un altro thread. competizione (interazione prevedibile non desiderata ma necessaria ) si ha quando 2 o più thread competono per l uso di risorse comuni che non possono essere usate contemporaneamente da più thread. Es: una stampante è una risorsa non condivisibile interferenza (interazione non prevedibile e non desiderata ) è dovuta ad erronea soluzione di situazioni di cooperazione o competizione. Il manifestarsi degli effetti di una interferenza dipende dai rapporti di velocità dei thread coinvolti.
16 Programmazione concorrente: I thread in JAVA I thread in JAVA sono rappresentati dalla classe: Thread. Questa incapsula tutto il sistema di controllo sui thread. Un oggetto Thread NON è un thread in esecuzione. Si deve pensare ad un oggetto di tipo Thread come ad un pannello di controllo o come alla rappresentazione di un thread in esecuzione. Ogni thread ha una priorità (un intero da 1 a 10) che viene usata dalla JVM per determinare il comportamento del thread rispetto agli altri thread. La CPU può eseguire istruzioni di un solo thread alla volta. La priorità è usata per decidere quando effettuare il context-switch e cioè quando passare dal thread attualmente in esecuzione ad un altro thread.
17 Programmazione concorrente: I thread in JAVA Ci possono essere due casi di context-switch Il thread cede la CPU questo può avvenire: - volontariamente tramite l invocazione di un metodo sull oggetto Thread che lo rappresenta. - perché si pone in pausa - perché si ferma - perché in attesa di I/O In questo caso tra tutti i thread pronti ad essere eseguiti quello a priorità maggiore guadagna la CPU Il thread viene forzato a lasciare la CPU da un thread a priorità più alta La politica per la quale il thread a priorità maggiore rispetto a quelli in esecuzione guadagna immediatamente la CPU viene definita pre-emptive multitasking.
18 Generazione di Thread: primo metodo 1) Si dichiara una classe che implementa l interfaccia Runnable interface Runnable public abstract void run(); Class ThreadNumeroPrimo implements Runnable private long numero; private boolean risultato; public ThreadNumeroPrimo(final long n) numero=n; public void run() // il codice che implementa il metodo run verrà eseguito come // thread indipendente risultato=funzioni.numeroprimo(numero); // verifica se numero è primo o no public boolean risultato() return risultato
19 Generazione di Thread: primo metodo 2) Si crea un oggetto di tipo Thread passando al costruttore un oggetto della classe dichiarata ThreadNumeroPrimo TNP=new ThreadNumeroPrimo(147) Thread T=new Thread(TNP); 3) L esecuzione del Thread creato parte nel momento in cui sull oggetto di tipo Thread viene invocato il metodo start. L invocazione del metodo join provoca l attesa che il thread abbia terminato l esecuzione Class Main public static void main(string argv[]) throws Exception ThreadNumeroPrimo TNP=newThreadNumeroPrimo(147); Thread T=new Thread(TNP); T.start(); T.start() 1 2 Threads // altre attività del main T.join(); // il main si sincronizza con la fine del Thread System.out.println( la risposta è +TNP.risultato()); tempo T.join()
20 Generazione di Thread: primo metodo INIZIO ThreadNumeroPrimo TNP=newThreadNumeroPrimo(147); Thread T=new Thread(TNP); T.start(); // altre attività del main risultato=funzioni.numeroprimo(numero); T.join(); System.out.println( la risposta è +TNP.risultato()); FINE
21 Metodi principali per il multithreading Metodi della classe java.lang.thread Thread( name ): crea un oggetto di tipo Thread chiamato name Thread( object ): crea un oggetto di tipo Thread a partire da un oggetto che implementa Runnable start(): provoca l esecuzione del Thread. Viene eseguito il codice presente nel metodo run() join(): provoca l attesa che il thread termini setpriority(int p): imposta la priorità del thread a p sleep(int delay): pone il thread in pausa per delay ms yield(): cede a Thread con più bassa priorità il diritto all esecuzione destroy(): distrugge il thread Metodi posseduti java.lang.object che interagiscono con i thread notifyall(): notifica di Wake Up a tutti i Threads in stato di wait sull oggetto. Un thread entra in stato di wait quando invoca uno dei metodi wait notify(): notifica di Wake Up al primo thread che si è posto in wait sull oggetto wait( delay ): attende che una delle seguenti condizioni si verifichi:» Uno dei metodi notify o notifyall è chiamato da un altro thread su questo oggetto» Il tempo delay in ms è passato wait(): attende che uno dei metodi notify o notifyall è invocato da un altro thread su questo oggetto
22 Metodi principali per il multithreading wait, notify, notifyall invocazione di wait e notifyall sull oggetto O invocazione di wait e notify sull oggetto O tempo Thread 1 priorità: 2 Thread 2 priorità: 5 Thread 3 priorità:8 Thread 1 priorità: 2 Thread 2 priorità: 5 Thread 3 priorità:8 O.wait() O.wait() O.wait() O.wait() O.notifyAll() O.notify()
23 Generazione di thread: secondo metodo 1) Si dichiara una classe che eredita direttamente dalla classe Thread Class ThreadNumeroPrimo extends Thread private long numero; private boolean risultato; public ThreadNumeroPrimo(final long n) numero=n; public void run() // il codice che implementa il metodo run verrà eseguito come // thread indipendente risultato=funzioni.numeroprimo(numero); // verifica se numero è primo o no public boolean risultato() return risultato
24 Generazione di Thread: secondo metodo 2) Si crea un oggetto della classe dichiarata 3) Si invoca sull oggetto creato il metodo start() ereditato dalla classe Thread e ridefinito. Class Main public static void main(string argv[]) throws Exception ThreadNumeroPrimo TNP=newThreadNumeroPrimo(147); TNP.start(); // altre attività del main TNP.join(); // il main si sincronizza con la fine del Thread System.out.println( la risposta è +TNP.risultato());
25 Mutua esclusione e sezioni critiche Una sezione critica è una parte di codice a cui può accedere un thread alla volta (serializzazione) es: buffer condiviso da due thread per la copia dei dati da un disco A ad un disco B Disco A read Reader Writer write Disco B i thred di lettura (Reader) e di scrittura (Writer) devono essere serializzati sulla struttura dati che implementa il buffer per proteggere la corruzione di indici e dati JAVA consente l uso di un costrutto di programmazione concorrente chiamato Monitor (Hoare-74) In JAVA un monitor è implementato definendo una classe i cui metodi sono dichiarati synchronized
26 Mutua esclusione e sezioni critiche In un oggetto i metodi dichiarati synchronized vengono eseguiti in modo mutuamente esclusivo. Non è possibile che due metodi synchronized vengano eseguiti simultaneamente da due thread diversi Quando un metodo synchronized viene invocato: se l oggetto su cui viene invocato è unlocked» il metodo viene immediatamente eseguito» l oggetto viene posto in stato di locked e ripasserà nello stato unlocked quando l esecuzione del metodo sarà terminata se l oggetto su cui viene invocato è locked» l esecuzione del metodo viene ritardata fino a quando l oggetto non sarà di nuovo unlocked
27 Mutua esclusione e sezioni critiche: esempio Class O. public synchronized void m1() public synchronized void m2(). O locked O unlocked Thread2 O.m1() Esecuzione O.m1() tempo Thread1 O.m2() attesa Esecuzione O.m2() tempo
28 Esempio di Monitor Applicazione per la copia di un file da un disco A ad un disco B tramite un buffer per il bilanciamento delle velocità di accesso dei dischi Si può implementare con la tecnica del produttore/consumatore definendo le classi: Reader implementa il thread che legge il file dal disco A e scrive i dati nel buffer. Se il buffer è pieno il thread è posto in stato di wait e permane in questo stato fino a che non viene svegliato dal Writer (notify). Ciò avviene quando il Writer legge (consuma) i dati dal buffer liberando spazio per nuovi dati. Writer implementa il thread che legge i dati dal buffer e li scrive sul file del disco B. Se il buffer è vuoto il thread è posto in stato di wait e permane in questo stato fino a che non viene svegliato dal Reader (notify). Ciò avviene quando il Reader scrive (produce) i dati sul buffer. Buffer implementa un Monitor che serializza le funzioni di scrittura e lettura su Buffer
29 La classe Buffer: descrizione Contiene i due metodi synchronized put e get per inserire e prelevare oggetti dal buffer Il buffer è implementato da un array di elementi di tipo Object gestito come una coda primo ultimo A B Il metodo get controlla se ci sono oggetti da prelevare. Se ci sono preleva il primo ed invoca il metodo notifyall altrimenti invoca il metodo wait Il metodo put controlla se la coda è piena se si invoca il metodo wait altrimenti inserisce l oggetto all ultimo posto ed invoca il metodo notifyall
30 La classe Buffer: implementazione Import java.io.*; class Buffer private static final int dim_coda = 5; // dimensione della coda private static final int ultimo_indice=dim_coda-1; private Object coda[]=new Object[dim_coda]; private int num_oggetti=0; private int primo=0; private int ultimo=0; public synchronized Object get() while (num_oggetti <= 0) try wait(); catch(interruptedexception e) // attendo che ci sia qualcosa da leggere Object res=coda[primo]; // prelevo il primo oggetto primo=primo==ultimo_indice? 0 : primo+1 // incremento (in modo circolare) primo num_oggetti--; // decremento il numero degli oggetti notifyall(); // sveglio il thread in attesa sul metodo put return res public synchronized Object put (Object valore) while (num_oggetti >= dim_coda) try wait(); catch(interruptedexception e) // attendo che ci sia posto per scrivere coda[ultimo] =valore; // inserisco l oggetto all ultimo posto ultimo=ultimo==ultimo_indice? 0 : ultimo+1; // incremento in modo circolare ultimo num_oggetti++; // incremento il numero degli oggetti notifyall(); // sveglio il thread in attesa sul metodo get
31 La classe Reader: descrizione Eredita dalla classe Thread Associa un BufferedInputStream al file origine sul disco A Per ogni linea del file: legge la linea la converte in un oggetto di tipo String inserisce l oggetto String nel buffer Al termine del file inserisce il valore null nel Buffer
32 La classe Reader: implementazione Class Reader extends Thread private Buffer buffer; private String nome_file; public Reader ( String nome_file, Buffer buffer ) super( Reader ); this.buffer=buffer; this.nome_file=nome_file; public void run() try FileInputStream istream = new FileInputStream (nome_file ); BufferedInputStream bis = new BufferdInputStream (istream ); int ch=bis.read(); while (ch!= -1 ) String linea = ; while (ch!= \n && ch!= -1 ) linea+= (char) ch; ch=bis.read(); buffer.put( linea ) ch=bis.read(); bis.close(); catch(exception e) buffer.put(null);
33 La classe Writer: descrizione Eredita dalla classe Thread Associa un oggetto di tipo PrintWriter al file destinazione sul disco B Legge le stringhe dal Buffer fino a che non viene letta la stringa null Ogni stringa letta viene scritta tramite lo stream PrintWriter sul file destinazione
34 La classe Writer: implementazione Class Writer extends Thread private Buffer buffer; private String nome_file; public Writer ( String nome_file, Buffer buffer) super( Writer ); this.buffer=buffer; this.nome_file=nome_file; public void run() try FileOutputStream ostream = new FileOutputStream (nome_file); PrintWriter pw = new PrintWriter (ostream ); Object linea = buffer.get(); while (linea!= null ) pw.print ( (String) linea + \n ); linea = buffer.get(); pw.flush(); ostream.close(); catch(exception e)
35 L applicazione Copia Class Copia public static void main ( String args[]) Buffer buffer = new Buffer(); // creazione del Monitor Reader reader = new Reader ( A:\input.txt,buffer); // creazione del Thread Reader Writer writer = new Writer ( B:\output.txt,buffer); // creazione del Thread Writer writer.start(); reader.start(); // entrambi i thread sono in esecuzione
Laboratorio di reti I
Laboratorio di reti I Stefano Brocchi brocchi@dsi.unifi.it 13 ottobre, 2009 Stefano Brocchi Laboratorio di reti I 13 ottobre, 2009 1 / 27 Introduzione Obiettivi del corso Aspetti di programmazione Java
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
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
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
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
DettagliGestione delle eccezioni in Java
Gestione delle eccezioni in Java Fondamenti di Informatica Ingegneria Gestionale Canale AL 1 Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel
DettagliEccezioni. Comportamento di default (esempio) Propagazione delle eccezioni
Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Eccezioni L esistenza di
DettagliFONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Prof. Zambonelli, Ing. Cabri, Ing. Denti, Ing. Andrea Aime Zambonelli,
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Eccezioni Categorie di eccezioni checked unchecked Gestione delle eccezioni Clausola throws Costrutto try - catch - finally Comando
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
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
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
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
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione
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)
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
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à
DettagliEccezioni predefinite
Eccezioni predefinite Java mette a disposizione molte eccezioni già confezionate, che descrivono la maggioranza dei problemi che possono verificarsi a run-time. Ognuna di queste è una classe. Tutte queste
DettagliINPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte)
INPUT OUTPUT 2004-05 Le operazioni di I/O avvengono attraverso stream (sequenze di byte) programma stream in lettura sorgente Programmazione in rete e laboratorio programma stream in scrittura destinazione
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
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
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
DettagliServer Sequenziale. Server Concorrente. Esercitazione: Socket Java con connessione
Esercitazione: Socket Java con connessione Sviluppare un applicazione C/S che effettui il trasferimento di un file dal client al server (put) usando una connessione. In particolare nel servizio: il client
DettagliInput/Output in Java
Corso Java Input/Output in Java Docente: Dott. Marco Bianchi Slide realizzate da Ing. A.Bei, Dott. M.Bianchi, Dott. F.Lombardi Input/Output in Java Per effettuare operazioni di I/O in Java è possibile
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
DettagliProgrammazione ad Oggetti
Programmazione ad Oggetti Java Eccezioni Eccezioni in breve Un eccezione è un oggetto che descrive una situazione anomala o di errore L eccezioni vengono lanciate da una parte di un programma e possono
DettagliVariabili e Metodi di classe Interfacce e Package Gestione di File in Java
Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe
DettagliGestione delle Eccezioni
Gestione delle Eccezioni Condizioni di Errore Una condizione di errore in un programma può avere molte cause Errori di programmazione Divisione per zero, cast non permesso, accesso oltre i limiti di un
DettagliEccezioni Precisazioni e approfondimenti
Eccezioni Precisazioni e approfondimenti Costruttore: il parametro String definisce il messaggio di errore associato all eccezione Metodi particolarmente significativi getmessage(): ritorna l istanza di
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
DettagliLaboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona
ed ed Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario ed scrittura su in Java ed ed di testo Scrivere stringhe su di testo
DettagliLe eccezioni in Java
Eccezioni 1 Le eccezioni in Java i tipi di eccezione sono particolari classi che contengono solo il costruttore ci possono essere più costruttori overloaded sono definite in moduli separati da quelli che
DettagliCreazione, eliminazione, lettura e scrittura di file di testo
Creazione, eliminazione, lettura e scrittura di file di testo Creazione Java mette a disposizione degli sviluppatori diverse classi per lavorare con i file di testo, analizziamo le principali: java.io.file
DettagliCreazione, eliminazione, lettura e scrittura di file di testo
Creazione, eliminazione, lettura e scrittura di file di testo Java mette a disposizione degli sviluppatori diverse classi per lavorare con i file di testo, analizziamo le principali: java.io.file La classe
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliEccezioni per codificare errori. Eccezioni. Gestione di eccezioni. lancio di eccezioni. checked e unchecked. cattura di eccezioni
Eccezioni Eccezioni per codificare errori lancio di eccezioni Eccezioni user defined checked e unchecked Gestione di eccezioni cattura di eccezioni Gestione degli errori Approccio tradizionale: codifica
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
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
DettagliProgrammazione a oggetti
Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
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à
DettagliInformatica I. Ingegneria Medica. Prof. Diego Salamon
Informatica I Ingegneria Medica Prof. Diego Salamon Gestione I/O Prof. Diego Salamon Introduzione Nella creazione e gestione del software è necessario interagire con entità esterne a quelle del programma
DettagliMultithreading 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
DettagliEccezioni ed asserzioni
Eccezioni ed asserzioni I concetti relativi ad eccezioni, errori ed asserzioni e le relative gestioni, permettono allo sviluppatore di scrivere del software robusto, ovvero che riesca a funzionare correttamente,
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
Dettagli20 - Input/Output su File
20 - Input/Output su File 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
DettagliIl linguaggio Java. Le eccezioni
Il linguaggio Java Le eccezioni Shit happens! Gli errori nei programmi si verificano Quello che è realmente importante è: cosa succede dopo che un errore si è verificato? TIGA 2 Eccezione Un'eccezione
DettagliProva d Esame 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 static int counter=0; private int code; public
DettagliIntroduzione. Java. Errori. Errori
Java gestire gli errori con le eccezioni G. Prencipe prencipe@di.unipi.it Introduzione La filosofia generale di Java è che un programma con errori non deve girare Una grossa parte viene fatta (come avete
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
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
DettagliLa gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni
La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.
DettagliGestione delle eccezioni
Gestione delle eccezioni Raffaella Brighi, a.a. 2007/08 Ereditarietà Corso di Algoritmi e programmazione. A.A. 2007-08 CdL Operatore Informatico Giuridico. Casi di insuccesso Vi sono numerosi problemi
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 threads (2) Programmazione Concorrente
Java threads (2) emanuele lattanzi isti information science and technology institute 1/28 Programmazione Concorrente Utilizzo corretto dei thread in Java emanuele lattanzi isti information science and
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
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
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
DettagliProgrammazione a Oggetti. Eccezioni
Programmazione a Oggetti Eccezioni Sommario Eccezioni Generalità, motivazioni Eccezioni in Java Sollevamento Cattura Trattamento Eccezioni I programmi spesso si trovano ad operare in condizioni anomale:
DettagliConcetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla
DettagliFondamenti di Informatica C Esercitazioni di Laboratorio / 4 Outline
Fondamenti di Informatica C Esercitazioni di Laboratorio / 4 http://polaris.ing.unimo.it/fic/laboratorio.html Ing. Francesco De Mola demola.francesco@unimore.it DII, Modena Via Vignolese (lab. Dottorandi
DettagliFlussi, lettori e scrittori
Flussi, lettori e scrittori Per sequenze di byte, InputStream, OutputStream e loro sottoclassi. Es: InputStream in = ; int next = in. read(); if (next!= -1) byte b = (byte) next; Per sequenze di caratteri,
DettagliGestione delle eccezioni
Gestione delle eccezioni Gestione di errori e situazioni eccezionali Una procedura (utente o di libreria) deve poter segnalare l impossibilità di produrre un risultato significativo o la propria terminazione
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
DettagliLezione 16 programmazione in Java
Lezione 16 programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Approfondimenti della programmazione OO I FILE Sgli stream (flussi) I file ad
DettagliESERCIZIO 1 (FILE DI TESTO)
ESERCIZIO 1 (FILE DI TESTO) Scrivere su un file di testo righe inserite da console, fino a quando non viene inserita la linea vuota. Passare il nome del file come parametro al programma. Bisogna incapsulare
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Eccezioni: Gestione dei Flussi versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliGestione delle eccezioni
Gestione delle eccezioni Le eccezioni sono un meccanismo per gestire situazioni anomale durante l esecuzione dei metodi. La gestione delle eccezioni deve garantire i seguenti principi: - le eccezioni non
DettagliLezione n.6 LPR A - INFORMATICA THREADS:, SINCRONIZZAZIONE ESPLICITA
Università degli Studi di Pisa Lezione n.6 LPR A - INFORMATICA THREADS:, SINCRONIZZAZIONE ESPLICITA 27/10/2008 1 THREADS COOPERANTI: IL MONITOR L'interazione esplicita tra threads avviene in un linguaggio
DettagliJAVA INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) JAVA Introduzione. Versioni e IDE DIAPOSITIVA 2 ALESSANDRO URSOMANDO
JAVA JAVA Introduzione INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) Cross Platform Web Dinamico Versioni e IDE DIAPOSITIVA 2 1 JAVA La programmazione orientata agli oggetti JAVA La programmazione OOP Nascita
DettagliOOP: L13: Eccezioni e loro trattamento in Java
Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica A. Acc. 2005/2006 Programmazione Orientata agli Oggetti OOP: L13: Eccezioni e loro trattamento
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
DettagliProgrammazione distribuita in Java. Socket & Client-Server
Programmazione distribuita in Java Socket & Client-Server 1 Strumenti per networking Libreria java.net Socket (Astrazione per una presa di comunicazione) Serializzazione Socket Per comunicare si apre una
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,
DettagliGestione delle eccezioni in Java
Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire
DettagliLinguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Gestione delle eccezioni in Java
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 - lezione 15 - Gestione delle eccezioni
DettagliGESTIONE DEGLI ERRORI. Il gestore delle eccezioni
Il gestore delle eccezioni 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
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
DettagliEsercitazioni 7 e 8. Bounded Buffer con sincronizzazione Java (1)
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
DettagliEsercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
DettagliLaboratorio di Programmazione 1 [Java]
Laboratorio di Programmazione 1 [Java] Prova di esame - 26 Gennaio 2011 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Pizzeria. La classe Tavolo ha i seguenti attributi: nome (una
DettagliStrutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05
Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica
DettagliAlberi Binario in Java
Alberi Binario in Java Realizzare un albero binario di ricerca. L albero binario è di ricerca se esiste una relazione di ordinamento tra i valori dei nodi (valori comparabili). In particolare, dato un
DettagliProgrammazione Concorrente in Java
Programmazione Concorrente in Java Lorenzo Bettini Dip. Sistemi e Informatica, Univ. Firenze http://www.dsi.unifi.it/~bettini Ottobre 2005 Gestione dei Processi Un processo è un programma in esecuzione.
DettagliSincronizzazione 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
DettagliGestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2)
Gestione di errori e situazioni eccezionali Gestione delle eccezioni Una procedura (utente o di libreria) deve poter segnalare l impossibilità di produrre un risultato significativo o la propria terminazione
DettagliUnità 2 I file binari
Dare una breve descrizione dei termini introdotti: (A) CONOSCENZA TERMINOLOGICA file binari file di tipi primitivi file di oggetti serializzazione (B) CONOSCENZA E COMPETENZA Rispondere alle seguenti domande
DettagliMulti-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ù
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
DettagliLe eccezioni sono eventi che si generano durante l esecuzione di un programma e in genere corrispondono a condizioni anomale.
Eccezioni Le eccezioni sono eventi che si generano durante l esecuzione di un programma e in genere corrispondono a condizioni anomale. Es.: divisioni per zero, indici array fuori range, malfunzionamento
DettagliProgrammazione in Java. Indipendenza dalla piattaforma. Indipendenza dalla piattaforma. Autore: Roberto Fabbrica Diapo 1.
1 Programmazione in Java Java è un linguaggio di programmazione orientato agli oggetti ed indipendente dalla piattaforma. Orientato agli oggetti: segue i paradigmi della programmazione orientata agli oggetti
DettagliCon 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
DettagliLettura e scrittura - Stream
Lettura e scrittura - Stream Obiettivo(fine della lezione): leggere/scrivere da/su file (e quindi verso qualsiasi dispositivo)! Tipi di stream " Stream di caratteri " Stream di byte! Classi astratte che
DettagliCorso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 2 (svolta) Socket Java con connessione Luca Foschini Anno accademico 2009/2010 Esercitazione 2 1 Architettura
DettagliT 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
DettagliLaboratorio di Programmazione Lezione 2. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]
DettagliLaboratorio di Programmazione di Rete Corso A
Laboratorio di Programmazione di Rete Corso A Anno Accademico 2005-2006 Docente: Laura Ricci Assistente: Paolo Mori INFORMAZIONI UTILI Orario del Corso: Lunedì 9.00-11.00 Laboratorio Gruppo A 11.00-13.00
DettagliThread 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
DettagliLezione n.2b. Threads: Callable & Future. 6/10/2008 Vincenzo Gervasi
Università degli Studi di Pisa Dipartimento di Informatica Lezione n.2b LPR-A-09 Threads: Callable & Future 6/10/2008 Vincenzo Gervasi Lezione U 2b: Callable & Future Vincenzo Gervasi 1 CALLABLE E FUTURE
DettagliSAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica
SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Esercitazioni di PROGETTAZIONE DEL SOFTWARE (Corsi di Laurea in Ingegneria Informatica ed Automatica ed Ingegneria
Dettagli