JAVA Gestione delle eccezioni e Programmazione concorrente

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "JAVA Gestione delle eccezioni e Programmazione concorrente"

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 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

Dettagli

GESTIONE DEGLI ERRORI

GESTIONE 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

Dettagli

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

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

Dettagli

19 - 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 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

Dettagli

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

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

Dettagli

Gestione delle eccezioni in Java

Gestione 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

Dettagli

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni

Eccezioni. 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

Dettagli

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni

FONDAMENTI 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,

Dettagli

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

Fondamenti 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

Dettagli

Concorrenza e sincronizzazione

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

Dettagli

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

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

Dettagli

Programmazione concorrente con il linguaggio Java

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

Dettagli

Multithreading. Multithreading/2

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

Dettagli

Corso sul linguaggio Java

Corso 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

Dettagli

Multithreading in Java I parte. Lorenzo Gallucci

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

Dettagli

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

RETI 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

Dettagli

Java thread, concorrenza

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

Dettagli

Eccezioni predefinite

Eccezioni 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

Dettagli

INPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte)

INPUT 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

Dettagli

Insegnamento di Laboratorio di algoritmi e strutture dati

Insegnamento 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

Dettagli

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

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

Dettagli

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

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

Dettagli

Server Sequenziale. Server Concorrente. Esercitazione: Socket Java con connessione

Server 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

Dettagli

Input/Output in Java

Input/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

Dettagli

Programmazione concorrente in Java

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

Dettagli

Programmazione ad Oggetti

Programmazione 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

Dettagli

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Variabili 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

Dettagli

Gestione delle Eccezioni

Gestione 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

Dettagli

Eccezioni Precisazioni e approfondimenti

Eccezioni 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

Dettagli

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

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

Dettagli

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Laboratorio 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

Dettagli

Le eccezioni in Java

Le 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

Dettagli

Creazione, eliminazione, lettura e scrittura di file di testo

Creazione, 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

Dettagli

Creazione, eliminazione, lettura e scrittura di file di testo

Creazione, 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

Dettagli

Le basi del linguaggio Java

Le 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

Dettagli

Eccezioni per codificare errori. Eccezioni. Gestione di eccezioni. lancio di eccezioni. checked e unchecked. cattura di eccezioni

Eccezioni 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

Dettagli

Java Virtual Machine

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

Dettagli

Università 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. 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

Dettagli

Programmazione a oggetti

Programmazione 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

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. 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

Dettagli

Gestione dei thread in Java LSO 2008

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

Dettagli

Informatica I. Ingegneria Medica. Prof. Diego Salamon

Informatica 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

Dettagli

Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015

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

Dettagli

Eccezioni ed asserzioni

Eccezioni 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,

Dettagli

Programmazione ad Oggetti. Java Parte II

Programmazione 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

Dettagli

20 - Input/Output su File

20 - 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

Dettagli

Il linguaggio Java. Le eccezioni

Il 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

Dettagli

Prova d Esame Compito A

Prova 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

Dettagli

Introduzione. Java. Errori. Errori

Introduzione. 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

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA 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

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. 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

Dettagli

La 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 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.

Dettagli

Gestione delle eccezioni

Gestione 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

Dettagli

Java Threads. esempi

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

Dettagli

Java threads (2) Programmazione Concorrente

Java 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

Dettagli

Polimorfismo parametrico vs polimorfismo per inclusione

Polimorfismo 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

Dettagli

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

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

Dettagli

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione 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

Programmazione a Oggetti. Eccezioni

Programmazione 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:

Dettagli

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Concetti 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

Dettagli

Fondamenti di Informatica C Esercitazioni di Laboratorio / 4 Outline

Fondamenti 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

Dettagli

Flussi, lettori e scrittori

Flussi, 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,

Dettagli

Gestione delle eccezioni

Gestione 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

Dettagli

Lab 1: Java Multithreading

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

Dettagli

Lezione 16 programmazione in Java

Lezione 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

Dettagli

ESERCIZIO 1 (FILE DI TESTO)

ESERCIZIO 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

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione 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)

Dettagli

Gestione delle eccezioni

Gestione 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

Dettagli

Lezione n.6 LPR A - INFORMATICA THREADS:, SINCRONIZZAZIONE ESPLICITA

Lezione 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

Dettagli

JAVA INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) JAVA Introduzione. Versioni e IDE DIAPOSITIVA 2 ALESSANDRO URSOMANDO

JAVA 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

Dettagli

OOP: L13: Eccezioni e loro trattamento in Java

OOP: 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

Dettagli

Uguaglianza e copia di oggetti

Uguaglianza 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

Dettagli

Programmazione distribuita in Java. Socket & Client-Server

Programmazione 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

Dettagli

Esercitazione 15. Il problema dello Sleeping Barber

Esercitazione 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,

Dettagli

Gestione delle eccezioni in Java

Gestione 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

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Gestione delle eccezioni in Java

Linguaggi 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

Dettagli

GESTIONE DEGLI ERRORI. Il gestore delle eccezioni

GESTIONE 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

Dettagli

Telematica II 17. Esercitazione/Laboratorio 6

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

Dettagli

Esercitazioni 7 e 8. Bounded Buffer con sincronizzazione Java (1)

Esercitazioni 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

Dettagli

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Esercizi 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

Dettagli

Laboratorio di Programmazione 1 [Java]

Laboratorio 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

Dettagli

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Strutture 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

Dettagli

Alberi Binario in Java

Alberi 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

Dettagli

Programmazione Concorrente in Java

Programmazione 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.

Dettagli

Sincronizzazione con Java

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

Dettagli

Gestione 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. 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

Dettagli

Unità 2 I file binari

Unità 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

Dettagli

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

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

Dettagli

24 - Possibili approfondimenti

24 - 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

Dettagli

Le eccezioni sono eventi che si generano durante l esecuzione di un programma e in genere corrispondono a condizioni anomale.

Le 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

Dettagli

Programmazione in Java. Indipendenza dalla piattaforma. Indipendenza dalla piattaforma. Autore: Roberto Fabbrica Diapo 1.

Programmazione 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

Dettagli

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

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

Dettagli

Lettura e scrittura - Stream

Lettura 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

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 2 (svolta) Socket Java con connessione Luca Foschini Anno accademico 2009/2010 Esercitazione 2 1 Architettura

Dettagli

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

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

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio 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[]

Dettagli

Laboratorio di Programmazione di Rete Corso A

Laboratorio 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

Dettagli

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

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

Dettagli

Lezione n.2b. Threads: Callable & Future. 6/10/2008 Vincenzo Gervasi

Lezione 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

Dettagli

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

SAPIENZA 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