PROGRAMMAZIONE AVANZATA JAVA E C
|
|
- Gaetana Meloni
- 5 anni fa
- Visualizzazioni
Transcript
1 PROGRAMMAZIONE AVANZATA JAVA E C Massimiliano Redolfi Lezione 9: multithreads, continue Stream in Java 8 Functional Programming stream/package-summary.html import java.util.stream;
2 Stream in Java 8 Functional Programming Da NON confodere con InputStream e simili!!! Stream
3 Stream Stream gli stream sono monads: strutture che definiscono unità computazionali composte da un insieme di step
4 Stream: operation pipepline List<String> mylist = Arrays.asList("a1", "a2", "b1", "c1", "c2"); mylist.stream().filter(s -> s.startswith("c")).map(string::touppercase).sorted().foreach(system.out::println); Le operazioni sugli stream possono essere intermedie o terminali: - intermedie: restituiscono uno stream come risultato - terminali non restituiscono nulla (es. foreach) Stream: operation pipepline Le operazioni sugli stream possono essere intermedie o terminali: - intermedie: restituiscono uno stream come risultato - terminali non restituiscono nulla (es. foreach) mylist.stream().filter(s -> s.startswith("c")).map(string::touppercase).sorted().foreach(system.out::println); Le operazioni sono non-interfering se non alterano lo stream sottostante (modificandone i dati o aggiungendo/togliendo elementi) Le operazioni sono stateless, dipendono solo dai valori specificati dai rispettivi parametri al momento della valutazione delle stesse, non dal contesto
5 Stream: possono essere creati in vari modi Stream.of("alfa", "beta", "gamma").findfirst().ifpresent(system.out::println); IntStream.range(1, 10).filter(v -> v%2 == 0).forEach(System.out::println); Gli stream possono essere generici (Stream) oppure legati a tipi primitivi (IntStream, LongStream, DoubleStream) Arrays.stream(new int[] {1, 2, 3.map(n -> n * n).average().ifpresent(system.out::println); I primitive streams supportano alcuni operatori specifici (average, sum, ) Stream.of("a1", "a2", "a3").map(s -> s.substring(1)).maptoint(integer::parseint).max().ifpresent(system.out::println); Inoltre utilizzano lambda exp. specializzate (IntFunction/ Function, ) IntStream.range(1, 4).mapToObj(i -> "a" + i).foreach(system.out::println); ordine degli operatori
6 Stream: ordine di elaborazione Stream.of("alfa", "beta", "gamma", "delta").filter(s -> { System.out.println("Filtro: " + s); return true; ; se non c è un operazione terminale gli operatori intermedi non vengono elaborati lazines Stream.of("alfa", "beta", "gamma", "delta").filter(s -> { System.out.println("Filtro: " + s); return true;.foreach(s -> System.out.println("For: " + s)); Filtro: alfa For: alfa Filtro: beta For: beta Filtro: gamma For: gamma Filtro: delta For: delta elaborazione verticale degli operatori Stream: ordine di elaborazione Stream.of("alfa", "beta", "gamma", "delta").map(s -> { System.out.println("Map: " + s); return s.touppercase();.anymatch(s -> { System.out.println("Match: " + s); return s.startswith("b"); ; Map: alfa Match: ALFA Map: beta Match: BETA Si elabora solo ciò che serve
7 Stream: ordine di elaborazione Stream.of("alfa", "beta", "gamma", "delta").map(s -> { System.out.println("Map: " + s); return s.touppercase();.filter(s -> { System.out.println("Filter: " + s); return s.startswith("a");.foreach(s -> System.out.println("forEach: " + s)); Map: alfa Filter: ALFA foreach: ALFA Map: beta Filter: BETA Map: gamma Filter: GAMMA Map: delta Filter: DELTA Stream.of("alfa", "beta", "gamma", delta").filter(s -> { System.out.println("Filter: " + s); return s.startswith("a");.map(s -> { System.out.println("Map: " + s); return s.touppercase();.foreach(s -> System.out.println("forEach: " + s)); Filter: alfa Map: alfa foreach: ALFA Filter: beta Filter: gamma Filter: delta l ordine conta! Stream: ordine di elaborazione Stream.of("gamma", "alfa", "beta", "epsilon", "delta").sorted((s1, s2) -> { System.out.printf("Sort: %s; %s\n", s1, s2); return s1.compareto(s2);.filter(s -> { System.out.println("Filter: " + s); return s.startswith("a");.map(s -> { System.out.println("Map: " + s); return s.touppercase();.foreach(s -> System.out.println("ForEach: " + s)); Sort: alfa; gamma Sort: beta; alfa Sort: beta; gamma Sort: beta; alfa Sort: epsilon; beta Sort: epsilon; gamma Sort: delta; epsilon Sort: delta; beta Filter: alfa Map: alfa ForEach: ALFA Filter: beta Filter: delta Filter: epsilon Filter: gamma sorted: operatore intermedio stateful, conserva lo stato durante l esecuzione Nota: viene elaborato in orizzontale per tutti gli elementi della sequenza.
8 Stream: ordine di elaborazione Stream.of("gamma", "alfa", "beta", "epsilon", delta").filter(s -> { System.out.println("Filter: " + s); return s.startswith("a");.sorted((s1, s2) -> { System.out.printf("Sort: %s; %s\n", s1, s2); return s1.compareto(s2);.map(s -> { System.out.println("Map: " + s); return s.touppercase();.foreach(s -> System.out.println("ForEach: " + s)); Filter: gamma Filter: alfa Filter: beta Filter: epsilon Filter: delta Map: alfa ForEach: ALFA l ordine conta! Riutilizzo degli Stream
9 Stream: riutilizzo & Supplier IntStream.iterate(2, f -> 2 * f).anymatch(f -> { System.out.println("Match: " + f); return f > 15; ; Match: 2 Match: 4 Match: 8 Match: 16 IntStream s = IntStream.iterate(2, f -> 2 * f); s.anymatch(f -> { System.out.println("Match: " + f); return f > 15; ; s.anymatch(f -> { System.out.println("Match: " + f); return f > 32; ; Match: 2 Match: 4 Match: 8 Match: 16 Exception in thread "main" java.lang.illegalstateexc eption: stream has already been operated upon or closed at java.util.stream.abstract Pipeline.evaluate(Abstrac tpipeline.java:229) at java.util.stream.intpipel ine.anymatch(intpipeline. java:477) at jexample_threads.main.mai n(main.java:17) Stream: riutilizzo & Supplier Supplier<IntStream> supplier = () -> IntStream.iterate(2, f -> 2 * f); supplier.get().anymatch(f -> { System.out.println("Match: " + f); return f > 15; ; supplier.get().anymatch(f -> { System.out.println("Match: " + f); return f > 32; ; Match: 2 Match: 4 Match: 8 Match: 16 Match: 2 Match: 4 Match: 8 Match: 16 Match: 32 Match: 64 public interface Supplier<T> { T get();
10 Sulla serie di fibonacci Fibonacci jex004_fibonacci # ciclico # ricorsivo # traite iteratori oppure tramite Stream! LongStream fibs = Stream.iterate(new long[]{1, 1, f -> new long[] {f[1], f[0] + f[1].maptolong(f -> f[0]); fibs.limit(10).foreach(system.out::println);
11 Stream & Thread invokeall ExecutorService executor = Executors.newWorkStealingPool(); List<Callable<String>> callables = Arrays.asList( () -> "alfa", () -> "beta", () -> "gamma"); executor.invokeall(callables).stream().map(future -> { try { return future.get(); catch(exception e) { ; return null;.foreach(system.out::println); invokeall: prende una collection di Callable e restituisce una lista di Future alfa beta gamma
12 invokeany ForkJoinPool ExecutorService executor = Executors.newWorkStealingPool(); List<Callable<String>> callables = Arrays.asList( () -> "alfa", () -> "beta", () -> "gamma"); System.out.println(executor.invokeAny(callables)); viene restituito il valore del primo dei Callable che termina invokeany: prende una collection di Callable e blocca l esecuzione sino a che uno dei callable termina, il valore di tale elemento viene quindi restituito Scheduled Thread Pools
13 Task con esecuzione ritardata ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); Runnable task = () -> System.out.println("\nScheduling: " + System.nanoTime()); ScheduledFuture<?> future = executor.schedule(task, 3, TimeUnit.SECONDS); TimeUnit.MILLISECONDS.sleep(1400); long remainingdelay = future.getdelay(timeunit.milliseconds); System.out.printf("Remaining Delay: %sms", remainingdelay); Remaining Delay: 1595ms Scheduling: Task periodici: fixedrate ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); Runnable task = () -> System.out.println("Scheduling: " + new Date()); int initialdelay = 0; int period = 1; executor.scheduleatfixedrate(task, initialdelay, period, TimeUnit.SECONDS); Scheduling: Thu Nov 12 23:42:48 CET 2015 Scheduling: Thu Nov 12 23:42:49 CET 2015 Scheduling: Thu Nov 12 23:42:50 CET 2015 Scheduling: Thu Nov 12 23:42:51 CET 2015 Scheduling: Thu Nov 12 23:42:52 CET 2015 Scheduling: Thu Nov 12 23:42:53 CET 2015 Scheduling: Thu Nov 12 23:42:54 CET 2015 Scheduling: Thu Nov 12 23:42:55 CET 2015 Scheduling: Thu Nov 12 23:42:56 CET 2015 Attenzione: che succede se il task dura 3 secondi?!
14 Task periodici: fixedrate ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); Runnable task = () -> {System.out.println("Scheduling: " + new Date()); try { TimeUnit.SECONDS.sleep(3); catch (Exception e) { ; ; int initialdelay = 0; int period = 1; executor.scheduleatfixedrate(task, initialdelay, period, TimeUnit.SECONDS); Scheduling: Thu Nov 12 23:51:58 CET 2015 Scheduling: Thu Nov 12 23:52:01 CET 2015 Scheduling: Thu Nov 12 23:52:04 CET 2015 Scheduling: Thu Nov 12 23:52:07 CET 2015 Scheduling: Thu Nov 12 23:52:10 CET 2015 Scheduling: Thu Nov 12 23:52:13 CET 2015 Scheduling: Thu Nov 12 23:52:16 CET 2015 Task periodici: fixeddelay ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); Runnable task = () -> {System.out.println("Scheduling: " + new Date()); try { TimeUnit.SECONDS.sleep(3); catch (Exception e) { ; ; int initialdelay = 0; int period = 1; executor.schedulewithfixeddelay(task, initialdelay, period, TimeUnit.SECONDS); Scheduling: Thu Nov 12 23:55:40 CET 2015 Scheduling: Thu Nov 12 23:55:44 CET 2015 Scheduling: Thu Nov 12 23:55:48 CET 2015 Scheduling: Thu Nov 12 23:55:52 CET 2015 Scheduling: Thu Nov 12 23:55:56 CET 2015 Scheduling: Thu Nov 12 23:56:00 CET 2015 Scheduling: Thu Nov 12 23:56:04 CET 2015
15 Concorrenza Concorrenza public class Main { public static void main(string[] args) throws Exception { ExecutorService exec = Executors.newFixedThreadPool(2); Counter counter = new Counter(); IntStream.range(0, 10000).forEach(i -> exec.submit(counter::inc)); exec.shutdown(); exec.awaittermination(60, TimeUnit.SECONDS); System.out.println(counter.count); class Counter { int count = 0; void inc() { count++; ci aspetteremmo 10000, giusto? "
16 Concorrenza public class Main { public static void main(string[] args) throws Exception { ExecutorService exec = Executors.newFixedThreadPool(2); Counter counter = new Counter(); IntStream.range(0, 10000).forEach(i -> exec.submit(counter::inc)); exec.shutdown(); exec.awaittermination(60, TimeUnit.SECONDS); System.out.println(counter.count); class Counter { int count = 0; synchronized void inc() { count++; ok! bisogna sincronizzare!
Riepilogo Su Stream. Esempio. Stateless Stateful. Esempio. Metodi definiti da Stream, visti precedentemente
Riepilogo Su Stream Metodi definiti da Stream, visti precedentemente metodo parametri in input output tipo operazione filter Predicate Stream intermedia count long terminale of lista di valori Stream intermedia
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 20 febbraio 2012
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 20 febbraio 2012 TEMPO DISPONIBILE: 1 ora Negli
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
DettagliCorso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010
Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori l Introduzione ai Thread in Java A.A. 2009/2010 1 Thread Un thread è un flusso sequenziale di esecuzione di istruzioni all interno
DettagliEsempio. Esempio. Generare Stream: iterate() Stateless Stateful
Esempio List teamlist = Arrays.asList(new Persona("Kent", 29, CTO"), new Persona("Luigi", 25, "Programmer"), new Persona("Andrea", 26, "GrLeader"), new Persona("Sofia", 26, "Programmer")); teamlist.stream().filter(p
DettagliProgrammazione Concorrente e Distribuita
Programmazione Concorrente e Distribuita Esame scritto del 10 Gennaio 2012 Versione C Esercizio 1 (5 punti) 1 public class Tenor extends S i n g e r { 2 public s t a t i c S t r i n g s i n g ( ) { 3 return
DettagliClassi Anonime In Java. Java. Espressioni Lambda. Implementazione Interfaccia
Java I nuovi paradigmi e linguaggi tendono a semplificare il lavoro del programmatore, nascondendo dentro le librerie (o i costrutti del linguaggio) parte della programmazione precedentemente necessaria
DettagliProgrammazione. Cognome... Nome... Matricola... Compitino del 26 gennaio 2009
Cognome................................ Nome................................... Matricola............................... Programmazione Compitino del 26 gennaio 2009 NOTA: Negli esercizi 1, 2, 3, 4 fate
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
DettagliProgrammazione Concorrente e Distribuita
Programmazione Concorrente e Distribuita Esame scritto del 29 Giugno 2012 Versione I Esercizio 1 ( punti) 1 class Mammal { 2 S t r i n g name = f u r r y ; 3 S t r i n g makenoise ( ) { return g e n e
DettagliEsercizio Sincronizzazione Thread
Esercitazione di oratorio 17/10/2007 Esercizio Il laboratorio di Informatica del Polo Marzotto e utilizzato da tre tipi di utenti, studenti, tesisti e professori ed ogni utente deve fare una richiesta
DettagliLa concorrenza in Java package java.util.concurrent Antonio Furone
La concorrenza in Java package java.util.concurrent Antonio Furone Coda Bloccante La classe LinkedTransferQueue è stata esplicitamente disegnata per dare supporto a problemi di tipo produttore/consumatore.
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
DettagliClassi Anonime In Java. Java. Espressioni Lambda. Implementazione Interfaccia
Java I nuovi paradigmi e linguaggi tendono a semplificare il lavoro del programmatore, nascondendo dentro le librerie (o i costrutti del linguaggio) parte della programmazione precedentemente necessaria
DettagliCorso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 0 (svolta) Multithreading in Java Luca Foschini Anno accademico 2009/2010 Esercitazione 0 1 Modello
DettagliEccezioni e Thread (cenni)
Eccezioni e Thread (cenni) Linguaggi di Programmazione: Paradigmi di Programmazione (Sperimentazioni) Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149
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
DettagliProva d Esame Compito A
Prova d Esame 19.04.2005 Compito A Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private int counter;
DettagliCOGNOME NOME MATRICOLA DATA
COGNOME NOME MATRICOLA DATA 1. Scrivere la classe Automobile che ha i seguenti attributi colore: una stringa indicante il colore dell automobile, velocità: un numero con la virgola indicante la velocità
DettagliJava. Classi Anonime In Java Da Java 1.1 si possono usare classi anonime per implementare interfacce. Espressioni Lambda. Implementazione Interfaccia
Java I nuovi paradigmi e linguaggi tendono a semplificare il lavoro del programmatore, nascondendo dentro le librerie (o i costrutti del linguaggio) parte della programmazione necessaria Da Java 5, in
DettagliProgrammazione. Cognome... Nome... Matricola... Compitino del 17 gennaio 2007
Cognome............................. Nome................................ Programmazione Compitino del 17 gennaio 2007 Matricola............................ NOTA: Negli esercizi 1, 2, 3, 4 fate riferimento
DettagliGestire le eccezioni. Lezione XI
Gestire le eccezioni Lezione XI Scopo della lezione Studiare il meccanismo di gestione delle eccezioni Implementare nuove eccezioni IX-B.2 Tipi di errori Errori rilevati in fase di compilazione: errori
DettagliEsercizi su Callback RMI
Esercizi su Callback RMI Esercitazione di Laboratorio di Programmazione di Rete A Daniele Sgandurra Università di Pisa 03/12/2008 Esercizio Settimana Scorsa Sviluppare un applicazione RMI per la gestione
Dettaglipublic double getraggio() restituisce la lunghezza del raggio del cerchio che esegue il metodo.
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 7 settembre 2015 TEMPO DISPONIBILE: 1 ora e 40
DettagliProgrammazione 1 A.A. 2015/2016
Cognome e Nome Matricola Programmazione 1 A.A. 2015/2016 Appello del 16 Dicembre 2015 Compito n 1 Prima parte Esercizio 1 (10 punti) Cosa stampa il seguente frammento di codice Java? int[] A = {3, 8, 91,
DettagliProgrammazione Concorrente e Distribuita
Programmazione Concorrente e Distribuita Esame scritto del 27 Agosto 2012 Versione AA Esercizio 1 (5 punti) 1 class A{ 2 S t r i n g s ; 3 4 A( S t r i n g s ){ 5 this. s = s ; 6 System. out. p r i n t
DettagliProgrammazione Asincrona
Corso di Programmazione Concorrente Programmazione Asincrona Valter Crescenzi http://crescenzi.inf.uniroma3.it Sommario Introduzione Task CPU vs I/O intensive Computazioni Asincrone ed Operazioni non-blocking
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
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA9 B3.1 Mutua esclusione 1 Prerequisiti Programmazione concorrente Sezione critica Mutua esclusione lock() e unlock() 2 1 Introduzione Si considerino le seguenti situazioni
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
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
DettagliEsercitazione n 4. Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java:
Esercitazione n 4 Obiettivi: Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java: Gestione di input/output da console e da file (package java.io) Utilizzo di
DettagliOEO041 Programmazione Java SE 8 avanzato
Tel. +39 02 365738 info@overneteducation.it www.overneteducation.it OEO041 Programmazione Java SE 8 avanzato Durata: 5 gg Descrizione Questo corso copre le caratteristiche essenziali del linguaggio Java
DettagliProva d Esame Compito A
Prova d Esame 19.07.2005 Compito A Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private int counter;
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:
Esercitazione 2 Java: Eccezioni @andreamocci Casi Eccezionali (1) /* * Produce un numero complesso a partire dalla sua forma polare */ public static Complex frompolarform(double abs, double phase) { /*
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
DettagliNote ed esercizi aggiuntivi
Corso di Programmazione Anno Accademico 2015 2016 Prof. Giovanni Pighizzini ed esercizi aggiuntivi Gli esercizi proposti sono utili per rivedere gli esempi riportati, che sono stati sviluppati e discussi
DettagliEsercizi RMI. Laboratorio di Programmazione di Rete A 5/12/2007. Esercitazione di Laboratorio
Esercitazione di Laboratorio 5/12/2007 Sviluppare un applicazione RMI per la gestione di un elezione. Il server esporta un insieme di metodi: public void vota(string nome): accetta come parametro il nome
Dettaglipublic double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo.
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 21 settembre 2015 TEMPO DISPONIBILE: 1 ora e 40
Dettaglidomenica 9 giugno 13 Serializzazione
Serializzazione A cosa serve? Ad ottenere una rappresentazione di una struttura dati che possiamo memorizzare, trasmettere via rete Cosa possiamo serializzare? OK NO Tipi primitivi, Riferimenti stringhe
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
DettagliProblema del buffer limitato. Lorenzo Gallucci
Problema del buffer limitato Lorenzo Gallucci Buffer limitato Immaginiamo una struttura dati che contiene delle informazioni La struttura può, in ogni momento, avere dello spazio libero oppure no Se vi
DettagliProgrammazione Concorrente e Distribuita
Programmazione Concorrente e Distribuita Esame scritto del 19 Dicembre 2011 Versione A Esercizio 1 (5 punti) 1 class A{ 2 S t r i n g s ; 3 4 A( S t r i n g s ){ 5 this. s = s ; 6 System. out. p r i n
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
DettagliUniversità degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002. Sistemi Operativi Corsi A e B.
Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Sistemi Operativi Corsi A e B Esercitazione 15 Il problema dello Sleeping Barber E dato un salone di barbiere,
DettagliThread. Introduzione ai thread Modelli di programmazione I Thread di Java
Thread Introduzione ai thread Modelli di programmazione I Thread di Java Thread Molti sistemi operativi forniscono il supporto per definire sequenze di controllo multiple all'interno di un singolo processo
DettagliCorso di Reti di Calcolatori T
Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 7 (svolta) Java RMI e Riferimenti Remoti Un RMI Registry Remoto Luca Foschini Anno accademico 2018/2019
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 6 Alberto Ceselli alberto.ceselli@unimi.it Università degli Studi di Milano 12 Marzo 2013 Funzioni che restituiscono tuple di valori Le funzioni Python possono
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E03 Esercizi su ricorsione F. Gasparetti Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Esercizi Ricorsione 1 Contenuti!Esercizi
DettagliLezione n.2. Thread Pooling e Callable 29/9-6/10/2009
Università degli Studi di Pisa Dipartimento di Informatica Lezione n.2 LPR-B-09 Thread Pooling e Callable 29/9-6/10/2009 Andrea Corradini ULezione 2: JAVA pooling Andrea Corradini 1 ATTENDERE LA TERMINAZIONE
DettagliEsonero del corso di Programmazione a Oggetti
Esonero del corso di Programmazione a Oggetti Roma, 26 novembre 2008 Considerate le seguenti definizioni di classi e interfacce in Java: class P {public static void print(string s){system.out.println(s);
DettagliGerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1
Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Una sottoclasse eredita metodi, variabili, etc. dalla superclasse... Per
DettagliEsercitazione 2: Java Thread
Esercitazione 2: Java Thread Thread Un thread è un singolo flusso sequenziale di controllo all interno di un processo Un thread (o processo leggero) è un unità di esecuzione che condivide codice e dati
DettagliELEMENTI DI PROGETTAZIONE SOFTWARE
ELEMENTI DI PROGETTAZIONE SOFTWARE Massimiliano Redolfi Lezione 7: la fortezza Perché un sistema sia robusto ogni suo componente deve essere robusto. Una semplice metodo public class Main { public static
DettagliLaboratorio di Programmazione 1 [Java]
Laboratorio di Programmazione 1 [Java] Prova di esame - 1 Giugno 2010 Tempo massimo: 50 minuti Si implementino in Java le classi Libretto e RigaLibretto. In particolare, la classe Libretto ha i seguenti
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
DettagliMultitheading. Corso di Laurea in Informatica. Sperimentazioni di Linguaggi di Programmazione: Paradigmi di Programmazione. a.a.
Multitheading Corso di Laurea in Informatica Sperimentazioni di Linguaggi di Programmazione: Paradigmi di Programmazione a.a. 1999/2000 Matteo Baldoni 1 Thread multipli all interno di un Task thread PC
DettagliIntroduzione a Java e all'ambiente di sviluppo
Introduzione a Java e all'ambiente di sviluppo Programmazione 2, a.a. 2006-2007 Nota: per esclusivo uso interno al corso, riferimenti bibliografici forniti a lezione Schema minimo di un applicazione public
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
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
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
DettagliLezione n.2. Thread Pooling. 29/9/2009 V. Gervasi
Università degli Studi di Pisa Dipartimento di Informatica Lezione n.2 LPR-A-09 Thread Pooling 29/9/2009 V. Gervasi ULezione 2: JAVA pooling Vincenzo Gervasi 1 ATTENDERE LA TERMINAZIONE DI UN THREAD: METODO
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 5 Alberto Ceselli alberto.ceselli@unimi.it Università degli Studi di Milano 12 Marzo 2013 Le funzioni sono oggetti di prima classe in Scheme In Scheme le funzioni
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA9 B3.2 Produttore-consumatore 1 Prerequisiti Elementi di programmazione concorrente Mutua esclusione Produttore-consumatore 2 1 Introduzione In questa Unità vediamo
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[]
Dettagli{4, 4, 2, 9, 13} {2, 2, 9, 13, 0} {0, 4, 2, 9, 13} {2, 9, 13, 0, 0}
16181 Nome Cognome A domande a risposta multipla con n scelte, la risposta corretta vale (n-1)/n*difficoltàdomanda, la risposta errata -1/n*difficoltà domanda, la risposta non data. Eseguendo il frammento
DettagliLaboratorio 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
DettagliProgrammazione Concorrente e Distribuita
Programmazione Concorrente e Distribuita Esame scritto del 22 Marzo 2012 Versione K Esercizio 1 (5 punti) Si consideri il codice seguente. 1 public c l a s s Redwood extends Tree { 2 public s t a t i c
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
DettagliIL LINGUAGGIO JAVA. Introduzione alla sintassi di Java La sintassi formalizza le regole sintattiche per scrivere frasi ben formate
Fondamenti di Informatica IL LINGUAGGIO JAVA Sintassi, Semantica, Input, Tipi Elementari e Istruzione Condizionale 1 Introduzione alla sintassi di Java La sintassi formalizza le regole sintattiche per
DettagliThread. Introduzione ai thread Modelli di programmazione I Thread di Java
Thread Introduzione ai thread Modelli di programmazione I Thread di Java Thread Molti sistemi operativi forniscono il supporto per definire sequenze di controllo multiple all'interno di un singolo processo
DettagliCapitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61
Capitolo 5 Array e collezioni c 2005 Pearson Education Italia Capitolo 5-1 / 61 Sommario: Array e collezioni 1 Array Array di oggetti Lunghezza di un array Accesso agli elementi di un array Array e cicli
DettagliMultithreading/2. Più richieste servite simultaneamente > 1 thread per ogni connessione client (+ 1 thread per accettare nuove richieste).
Multithreading Osservazioni su EchoServer Programmazione TCP in Java EchoServer ed EchoClient Uso del multithreading nella programmazione di rete ChatClient e ChatServer Multithreading/2 Più richieste
DettagliAgent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A
Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Ingegneria del software A Input/output (in Java) Michele Tomaiuolo Eccezione Un eccezione è
DettagliCollezioni, mappe e iteratori (a cura del Prof. Marco Patella)
, mappe e iteratori (a cura del Prof. Marco Patella) 1 Introduzione al Java Collections Framework Una collezione (o contenitore) consente di organizzare e gestire un gruppo di oggetti collezioni (vere
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione e rimane immutato.
DettagliLinguaggi di Programmazione I Lezione 8
Linguaggi di Programmazione I Lezione 8 Prof. Marcello Sette mailto://marcello.sette@gmail.com http://sette.dnsalias.org 29 aprile 2008 Identificatori e parole chiavi 3 Commenti.............................................................
DettagliIntroduzione Generics Iteratori. Collezioni in Java. Dr. Giulio Pellitta. 13 aprile 2011
13 aprile 2011 Cos è una collezione? Gerarchia delle collezioni Introduzione Una collezione è semplicemente un oggetto che raggruppa più oggetti (detti elementi della collezione) in una singola unità.
DettagliMultithreading. Multithreading/2
Multithreading Osservazioni su EchoServer Programmazione TCP in Java EchoServer ed EchoClient Uso del multithreading nella programmazione di rete ChatClient e ChatServer Esempio di Web server(?) Multithreading/2
DettagliProgrammazione ad Oggetti
Programmazione ad Oggetti Java File Flussi e file Flusso (stream) = sequenza di dati di input: da cui leggere di output: su cui scrivere I file sono visti come flussi di dati Il package java.io definisce
DettagliCOMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre Alcune Soluzioni
COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 10 Dicembre 2001 Alcune Soluzioni ESERCIZIO 1. Si consideri il seguente frammento di codice in linguaggio Java: int[][] a = new int[n][n]; for (int i
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
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,
DettagliCast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double
Il cast Cast implicito Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto Per esempio: byte short int long float double int x = 10; float f; f = x; Il valore di
DettagliL input da tastiera in Java. Dott. Ing. M. Banci, PhD
L input da tastiera in Java Dott. Ing. M. Banci, PhD La lettura di un flusso di input in Java avviene attraverso l'oggetto in della classe System. System.in appartiene alla classe InputStream (letteralmente
DettagliLaboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale. Anno Accademico 2012/2013
Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale Anno Accademico 2012/2013 Thread e processi Da software ci si attende la concorrenza. Java è stato progettato per supportare concorrenza
DettagliPrincipi, Modelli e Applicazioni per Sistemi Distribuiti M
Università degli Studi di Bologna Facoltà di Ingegneria Principi, Modelli e Applicazioni per Sistemi Distribuiti M Esercitazione 2 (svolta) Socket Java con connessione Alessandro Pernafini Architettura
DettagliCompute engine generici in RMI
Compute engine generici in RMI Esempio: Calcolo del prodotto scalare Un unico server offre il servizio di calcolo del prodotto scalare tra vettori di interi Un client richiede al server il calcolo del
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
DettagliCapitolo 19. Ricorsione
Capitolo 19 La ricorsione Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a sé stessa Esempio: Funzione fattoriale su interi non negativi: f(n) = n!
DettagliUnità A2. JVM e processi
(A) COOSCEZA TERMIOLOGICA Dare una breve descrizione dei termini introdotti: Classe Runtime getruntime() exec() classe Process classe System exitvalue() waitfor() stdin, stdout, stderror getproperty()
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,
DettagliGenerics & Collections
Generics & Collections Ingegneria del software Jody Marca jody.marca@polimi.it I Generics 2 I Generics rendono possibile definire tipi parametrici tramite classi ed interfacce che gestiscono tipi generici
DettagliI Thread. Sistema Operativo e Thread
I Thread un thread è uno stream di esecuzione del programma Sistema Operativo e Thread Un processo o thread una successione di operazioni che vengono eseguite dal sistema operativo in modo sequenziale
DettagliLezione n.2 LPR - Informatica Applicata Thread Pooling, Callable Gestione Indirizzi IP
Lezione n.2 LPR - Informatica Applicata Thread Pooling, Callable Gestione 28/02/2013 POOL DI THREAD IN JAVA Implementazione del thread pooling: fino a J2SE 4 era a carico del programmatore J2SE 5.0 definisce
DettagliSoluzione della prova scritta del 5 febbraio 2013
Corso di Programmazione Anno Accademico 2012 2013 Prof. Giovanni Pighizzini della prova scritta del 5 febbraio 2013 Questo documento discute un esempio di soluzione di alcuni esercizi assegnati. Naturalmente
Dettagli