Capitolo 12 Thread Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies.

Slides:



Advertisements
Presentazioni simili
Unit à E4 Applet. Obiettivi Saper progettare e realizzare Applet Java allinterno di pagine HTML Comprendere le interazioni tra il browser e lapplet Saper.
Advertisements

Java Stream e File. La classe File Per operare con lintero file java mette a disposizione la classe File Per utilizzare la classe File è necessario importare.
Costruttori e Distruttori
Capitolo 2 Nozioni fondamentali su Java Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill.
Iterazione Capitolo 17 febbraio 2004 Iterazione.
Array di array Capitolo 20 febbraio 2004 Array di array.
Capitolo 13 Verifica e debug Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill.
Capitolo 8 Array Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl.
Capitolo 1 Introduzione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Programmazione Ingegneria TLC
LIP: 4 Aprile 2008 ECCEZIONI. Eccezioni Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
LIP: 19 Aprile Contenuto Soluzione Compitino Tipo di dato MultiSet, estensione con sottoclasse.
Liste Ordinate 3 Maggio Ultima Lezione Abbiamo visto i tipi di dato astratti IntList e StringList Realizzano liste di interi e di stringhe Realizzati.
S.I.S.S.I.S. Catania 2002/03 LE APPLET JAVA Prof. D. Cantone Amuso Raffaele.
Elementi di programmazione grafica
Elementi di programmazione grafica
2 luglio 2006URM2 – ING- OOP0304 OL G. Cantone e A. Lomartire 1 Programmazione Orientata agli Oggetti Processi, task e thread Java (ed esempi) Università
Fisica Computazionale I - 51 OPERAZIONI DI INPUT/OUTPUT Le operazioni di input/output sono estremamente complesse perche' implicano una sostanziale interazione.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Introduzione al linguaggio Java
Scomposizione di stringhe
Grafico di funzione Disegna la Matematica.
1 Eventi/2 Più movimento alle classi. 2 Eventi Java Modo per intercettare il verificarsi di certe condizioni / azioni e fare in modo che venga eseguito.
Esercizi di grafica ….
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Programmazione II: Tecniche Avanzate. (A.A. 1999/2000) - Lezione 6 1 Estensione di classi: il Contratto INTERFACCIA E REALIZZAZIONE Che cosa realizza una.
Selezione (=scelta) con “if-else”
CAPITOLO 1 JAVA: UN TUFFO NEL LINGUAGGIO E NELL'AMBIENTE.
Progetto di applicazioni grafiche. Disegno di forme complesse Prassi : un classe per ciascuna forma Progetta la forma individuando le componenti base.
Capitolo 2 Utilizzare oggetti
Sistemi Operativi GESTIONE DEI PROCESSI.
Java base IV: Java e la programmazione O.O.
IL CONCETTO DI PACKAGE Una applicazione è spesso composta di molte classi (eventualmente correlate) Un package è un gruppo di classi che costi- tuiscono.
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori. Lapproccio classico consiste nellinse- rire controlli.
JAVA E LA GRAFICA L’architettura Java è graphics-ready
APPLICAZIONI & APPLET Java è un ottimo linguaggio per costruire applicazioni anche non per Internet anche non grafiche ma si è diffuso storicamente, e.
Introduzione a:. Nella prima parte di questo corso si vedranno i CONCETTI di: CLASSE (programma) METODO (Algoritmi e dati) CONCETTI CLASSICI DI PROGRAMMAZIONE.
Programmazione in Java
Cosa è una applicazione distribuita?
Diagramma di flusso del problema del Supermercato.
Diagramma di flusso del problema del Calcolo del Bollo di Circolazione
Programmazione concorrente
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
1 Incapsolamento (intro) Sandro Pedrazzini Approfondimento Incapsolamento (introduzione)
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Conversione da base 10 a base X (Utilizzo della pila)
1 Applet ed HTML Fondamenti di Informatica Corso D.
Le eccezioni F. Bombi 01/11/ Errori e situazioni impreviste situazioni eccezionali In un programma situazioni eccezionali possono.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Concorrenza 1 Conto corrente Nella famiglia Giambietti non ci sono grossi problemi economici. Infatti il padre, Enea, di professione artista free-lance,
Introduzione. Introduzione Un’applet Java: Una applet ("applicazioncina") è una applicazione non autonoma, ma pensata per far parte di una pagina Internet.
Corso di Algoritmi e Strutture Dati con Laboratorio A.A. 2014/15 Libreria standard.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Java gestione eventi introduzione. La gestione degli eventi Ci sono 3 oggetti interessati alla g. d. e.: L’oggetto interessato (event source) ad esempio.
Definizione di classi Capitolo 18 febbraio 2004 Definizione di classi.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Interfacce grafiche Capitolo 27 marzo 2004 Interfacce grafiche.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Timer Animazioni.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
© Copyright NTT DATA Italia – All Rights Reserved The information contained in this document is the property of NTT DATA Italia S.p.A. and the addressee.
Gestione dei thread in Java
Programmazione in Java
1 Elementi di programmazione concorrente in Java: i threads.
1 Java primo contatto Quando le classi fanno la differenza …
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
Transcript della presentazione:

Capitolo 12 Thread Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl La storia finora  I programmi sono costituiti da singoli flussi di controllo Il flusso di controllo inizia nella prima istruzione del metodo main() e procede istruzione per istruzione fino all'ultima istruzione del metodo main() Il flusso di controllo può essere passato temporaneamente ad altri metodi con le invocazioni, ma il controllo torna a main() dopo il completamento  I programmi con flussi di controllo singoli sono detti processi sequenziali Sebbene un'istruzione all'interno di un solo flusso di controllo possa invocare altri metodi, l'istruzione che segue non viene eseguita finché la prima non è conclusa

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Processi  La capacità di eseguire più processi contemporaneamente è una caratteristica importante dei moderni sistemi operativi Un desktop utente potrebbe eseguire un browser, un IDE di programmazione, un lettore di musica e un sistema di preparazione dei documenti  Java supporta la creazione di programmi con flussi di controllo concorrenti, i thread I thread sono eseguiti in un programma e utilizzano le sue risorse per l'esecuzione  Processi leggeri

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Processi

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Elaborazione multithread Il programma a più thread avvia il thread A per delegare parte delle operazioni del programma. Dopo aver avviato il thread, il programma continua con l'istruzione successiva Un programma a più thread si conclude quando finiscono tutti i flussi di controllo individuali (thread) Il programma a più thread avvia anche il thread B per delegare parte delle operazioni del programma. Dopo aver avviato il thread, il programma continua con l'istruzione successiva Il thread A avvia il thread C per delegare parte delle operazioni del thread. Dopo aver avviato il thread C, il thread A continua con l'istruzione successiva

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Timer e TimerTask  Tra le altre, le classi Java java.util.Timer e java.util.TimerTask supportano la creazione e la pianificazione di thread  La classe astratta Timer possiede metodi per creare thread dopo un ritardo specificato o in un tempo specifico public void schedule(TimerTask task, long m)  Esegue task.run() dopo m millisecondi. public void schedule(TimerTask task, long m, long n)  Esegue task.run() dopo m millisecondi. Poi esegue ripetutamente task.run() ogni n millisecondi. public void schedule(TimerTask task, Date y)  Esegue task.run() nel momento t.  Un thread può essere creato estendendo TimerTask e specificando una definizione per il metodo astratto run()

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Esecuzione dopo un ritardo  La classe DisplayCharSequence estende TimerTask per supportare la creazione di un thread che visualizza 20 copie del carattere desiderato (per esempio “H”, “A” o “N”)

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Utilizzo di DisplayCharSequence public static void main(String[] args){ DisplayCharSequence s1 = new DisplayCharSequence('H'); DisplayCharSequence s2 = new DisplayCharSequence('A'); DisplayCharSequence s3 = new DisplayCharSequence('N'); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Defining DisplayCharSequence import java.util.*; public class DisplayCharSequence extends TimerTask { private char displayChar; Timer timer; public DisplayCharSequence(char c) { displayChar = c; timer = new Timer(); timer.schedule(this, 0); } public void run() { for (int i = 0; i < 20; ++i) { System.out.print(displayChar); } timer.cancel(); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Implementazione di un metodo run()  Un'implementazione sottoclasse del metodo astratto run() di TimerTask generalmente è divisa in due parti La prima definisce l'azione specifica per l'applicazione che il thread deve eseguire La seconda termina il thread  Il thread viene terminato quando viene completata l'azione specifica per l'applicazione Azione che il thread deve compiere L'azione desiderata è stata completata; pertanto, il thread viene chiuso

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Esecuzione ripetuta  Esempio Aggiornamento di un orologio ad ogni secondo public static void main(String[] args){ SimpleClock clock = new SimpleClock(); }

public class SimpleClock extends TimerTask { final static long MILLISECONDS_PER_SECOND = 1000; private JFrame window = new JFrame("Clock"); private Timer timer = new Timer(); private String clockFace = ""; public SimpleClock() { window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setSize(200, 60); Container c = window.getContentPane(); c.setBackground(Color.white); window.setVisible(true); timer.schedule(this, 0, 1*MILLISECONDS_PER_SECOND); } public void run() { Date time = new Date(); Graphics g = window.getContentPane().getGraphics(); g.setColor(Color.WHITE); g.drawString(clockFace, 10, 20); clockFace = time.toString(); g.setColor(Color.BLUE); g.drawString(clockFace, 10, 20); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Pianificazione di SimpleClock Pausa in millisecondi prima della prima esecuzione del thread Numero di millisecondi tra esecuzioni del thread

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Esecuzione all'orario scelto  Esempio Pianificazione di calendari a comparsa utilizzando la classe DisplayAlert

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Utilizzo di DisplayAlert public static void main(String[] args){ Calendar c = Calendar.getInstance(); c.set(Calendar.HOUR_OF_DAY, 9); c.set(Calendar.MINUTE, 30); c.set(Calendar.SECOND, 0); Date studentTime = c.getTime(); c.set(Calendar.HOUR_OF_DAY, 18); c.set(Calendar.MINUTE, 15); c.set(Calendar.SECOND, 0); Date danceTime = c.getTime(); DisplayAlert alert1 = new DisplayAlert( "Prospective student meeting", studentTime); DisplayAlert alert2 = new DisplayAlert( "Dance recital", danceTime); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Defining DisplayAlert import javax.swing.JOptionPane; import java.awt.*; import java.util.*; public class DisplayAlert extends TimerTask { private String message; private Timer timer; public DisplayAlert(String s, Date t) { message = s + ": " + t; timer = new Timer(); timer.schedule(this, t); } public void run() { JOptionPane.showMessageDialog(null, message); timer.cancel(); }

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Sleeping  I thread possono essere utilizzati per mettere in pausa un programma  La classe standard java.lang.Thread possiede un metodo di classe sleep() per mettere in pausa un flusso di controllo public static void sleep(long n) throws InterruptedException Mette in pausa il thread corrente per n millisecondi. Poi lancia una InterruptedException.

Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Esempio di sleeping  Codice Date t1 = new Date(); System.out.println(t1); try { Thread.sleep(10000); } catch (InterruptedException e) { } Date t2 = new Date(); System.out.println(t2);  Output Fri Jan 31 19:29:45 EST 2003 Fri Jan 31 19:29:55 EST 2003