Vorlesung Informatik II
|
|
- Mareke Pfeiffer
- vor 6 Jahren
- Abrufe
Transkript
1 Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 17. JAVA Kommunikation von Threads 1
2 Motivation Threads verzahnen nichtdeterministisch (siehe Informatik 1) ihre Verarbeitungsschritte das kann bei Zugriff auf gemeinsame Daten zu Problemen führen: Falsche Ergebnisse Unterschiedliche Ergebnisse bei mehrfacher Ausführung 2
3 Motivation Beispiel 1: Gemeinsame Daten int y, x = 2 Thread 1: (1) u = x (2) u = -u (3) x = u Thread 2: (4) v = x (5) v = v * x (6) y = v Ergebnis: (x,y)=(-2,4) oder =(-2,-4), je nach Verzahnung 3
4 Motivation Beispiel 1: Gemeinsame Daten int y, x = 2 public class Data { int x,y;... public class Thread1 extends Thread { private Data data; public Thread1(Data d){ data = d; start(); public void run(){ int u = data.getx(); u = -u; data.setx(u);... 4
5 Motivation Beispiel 1: Gemeinsame Daten int y, x = 2 public class Data { int x,y;... public class Thread2 extends Thread { private Data data; public Thread2(Data d){ data = d; start(); public void run(){ int v = data.getx(); v = v * data.getx(); data.sety(v);... 5
6 Motivation Beispiel 1: Gemeinsame Daten int y, x = 2 public static void main(string[] args) { Data d = new Data(); d.setx(2); new Thread1(d); new Thread2(d); System.out.println( x: +d.getx()); System.out.println( y: +d.gety()); 6
7 Motivation Beispiel 2: Zwei Threads benutzen Schreiboperation einer Klasse, die einen Wert vor und nach einer Berechnung (die etwas dauert) ausgibt public class PrintClass { private static long TestValue = 0; public void print(string which, int runde){ this.which = which; this.runde=runde; System.out.println(which + " Thread, print Start: Round "+runde+", TestValue " + TestValue); for(int i=0; i< ; i++){ TestValue++; System.out.println(which + " Thread, print Ende: Round "+runde+", TestValue " + TestValue); 7
8 Motivation Beispiel 2: Zwei Threads benutzen Schreiboperation einer Klasse, die einen Wert vor und nach einer Berechnung (die etwas dauert) ausgibt public class WriteThread extends Thread {... public WriteThread(String name,printclass pc,int pause) {... public void run(){ for(int i=0;i<5;i++){ try{ sleep(pause); catch (Exception e){ pc.print(name,i); 8
9 Motivation Beispiel 2: Zwei Threads benutzen Schreiboperation einer Klasse, die einen Wert vor und nach einer Berechnung (die etwas dauert) ausgibt public static void main(string[] args) { PrintClass pc = new PrintClass(); new WriteThread("First",pc, 2000); new WriteThread("Second",pc, 2700); Ergebnis: Beide Threads unterbrechen gegenseitig Ausführungen von print (verzahnen Ausführungen von print) 9
10 Motivation Beispiel 2: Zwei Threads benutzen Schreiboperation einer Klasse, die einen Wert vor und nach einer Berechnung (die etwas dauert) ausgibt... Second Thread, print Start: Round 2, TestValue Second Thread, print Ende: Round 2, TestValue First Thread, print Start: Round 3, TestValue First Thread, print Ende: Round 3, TestValue First Thread, print Start: Round 4, TestValue Second Thread, print Start: Round 3, TestValue First Thread, print Ende: Round 4, TestValue Second Thread, print Ende: Round 3, TestValue Second Thread, print Start: Round 4, TestValue Second Thread, print Ende: Round 4, TestValue
11 Synchronisation Problem: Es kommt zu Daten-Inkonsistenzen durch Verzahnung von Threads auf gemeinsamen Daten 11
12 Synchronisation Lösung: Verbiete eine Verzahnung von Threads in kritischen Bereichen (fordere exklusiven Zugriff) Eine Anweisungs-Sequenz, die bei paralleler Ausführung durch mehrere Threads Daten-Inkonsistenzen hervorruft, heisst kritischer Bereich Idee: Definiere kritischen Bereich als unteilbare Aktion, die nur jeweils von einem Thread pro Objekt ausgeführt werden 12
13 Synchronisation Kritische Bereiche Problematisch: Verzahnte Schreiboperationen (Nur die aktuellste Schreiboperation wird gespeichert) Problematisch: Schreiboperation verzahnt mit Leseoperation (Lesewert vor und nach der Schreiboperation unterschiedlich) Unproblematisch: Verzahnte Leseoperationen (Wert wird nicht beeinflusst) 13
14 Synchronisation Unteilbare Aktionen Können von Threads pro Objekt nur sequentiell hintereinander ausgeführt werden Ausführung einer unteilbaren Aktion wird mit dem Zugriff auf ein Objekt synchronisiert (für unterschiedliche Objekte ist die Verzahnung offensichtlich unproblematisch) In Java synchronized (Object o) {<unteilbareaktion> Dient der Synchronisation von (u.u. mehreren) unteilbaren Aktionen mit einem Objekt o 14
15 Synchronisation In Java synchronized (Object o) {<unteilbareaktion> Tritt ein Thread in den Block (die unteilbare Aktion) ein, so hat er eine Sperre (Lock) auf das Objekt o. Kein anderer Thread kann in eine unteilbare Aktion des Objekts o eintreten, bevor die Sperre aufgehoben wurde (es kann zu jedem Zeitpunkt höchstens eine Sperre auf ein Objekt geben) Die Sperre wird aufgehoben, wenn der Thread den Block verlässt dann kann ein wartender Thread (gemäß interner Prioritäten) die Sperre bekommen 15
16 Synchronisation In Java synchronized (Object o) {<unteilbareaktion> Implementierung: Jedes Objekt verwaltet eine Referenz auf denjenigen Thread, der eine Sperre auf es hat 16
17 Synchronisation In Java synchronized (Object o) {<unteilbareaktion> Spezialfall: Synchronisation von Methoden synchronized meinemethode(<parameter>{ <Methoden-Rumpf> entspricht: meinemethode(<parameter>) { synchronized(this){ <Methoden-Rumpf> 17
18 Synchronisation Im Beispiel 1 (Ergebnis ist immer (x,y)=(-2,4)) public class Thread1 extends Thread { private Data data; public Thread1(Data d){ data = d; start(); public void run(){ synchronized(data){ int u = data.getx(); u = -u; data.setx(u);... (analog für Thread2) 18
19 Synchronisation Im Beispiel 2 public class PrintClass {... public synchronized void print(string which, int runde){... 19
20 Synchronisation Im Beispiel 2 (Alternative) public class WriteThread extends Thread {... public void run(){ for(int i=0;i<5;i++){ try{ sleep(pause); catch (Exception e){ synchronized(pc){ pc.print(name,i); 20
21 Synchronisation Im Beispiel 2: Ausgabe... First Thread, print Start: Round 2, TestValue First Thread, print Ende: Round 2, TestValue Second Thread, print Start: Round 2, TestValue Second Thread, print Ende: Round 2, TestValue First Thread, print Start: Round 3, TestValue First Thread, print Ende: Round 3, TestValue First Thread, print Start: Round 4, TestValue First Thread, print Ende: Round 4, TestValue Second Thread, print Start: Round 3, TestValue Second Thread, print Ende: Round 3, TestValue Second Thread, print Start: Round 4, TestValue Second Thread, print Ende: Round 4, TestValue
22 Kommunikation zwischen Threads Manchmal müssen Threads kooperieren, z.b. ein Thread auf Ergebnisse eines anderen Threads warten. Fall 1: Ergebnisse liegen bei Terminierung vor Methode der Klasse Thread: void join() throws InterruptedException e Verarbeitender (aufrufender) Thread wartet auf Beendigung des empfangenden Threads (Ein Thread führt Liste derjenigen Threads, die auf ihn warten) 22
23 Kommunikation zwischen Threads Manchmal müssen Threads kooperieren, z.b. ein Thread auf Ergebnisse eines anderen Threads warten. Fall 1: Ergebnisse liegen bei Terminierung vor Methode der Klasse Thread: void join() throws InterruptedException e Beispiele (Aufruf durch interne Threads): Aufruf in main: Hauptprogramm wartet mit Weiterverarbeitung Aufruf in actionperformed: Ereignisbehandlung wartet 23
24 Kommunikation zwischen Threads Manchmal müssen Threads kooperieren, z.b. ein Thread auf Ergebnisse eines anderen Threads warten. Fall 2: Ergebnisse liegen während der Abarbeitung vor Methode der Klasse Object: void wait() throws InterruptedException e Aufrufendes Objekt veranlasst verarbeitenden Thread, seine Sperre freizugeben und zu warten, durch einen anderen Thread wieder aktiviert zu werden (versetzt Thread in Wartezustand) Kann nur in einem synchronized-block verwendet werden 24
25 Kommunikation zwischen Threads Manchmal müssen Threads kooperieren, z.b. ein Thread auf Ergebnisse eines anderen Threads warten. Fall 2: Ergebnisse liegen während der Abarbeitung vor Methode der Klasse Object: void wait() throws InterruptedException e Implementierung: Jedes Objekt führt eine Liste derjenigen Threads, die auf eine Sperre auf es warten 25
26 Kommunikation zwischen Threads Manchmal müssen Threads kooperieren, z.b. ein Thread auf Ergebnisse eines anderen Threads warten. Fall 2: Ergebnisse liegen während der Abarbeitung vor Methode der Klasse Object: void notify() Aufrufendes Objekt veranlasst verarbeitenden Thread, Sperre an einen wartenden anderen Thread zu übergeben (aktiviert einen anderen Thread) Kann nur in einem synchronized-block verwendet werden 26
27 Kommunikation zwischen Threads Manchmal müssen Threads kooperieren, z.b. ein Thread auf Ergebnisse eines anderen Threads warten. Fall 2: Ergebnisse liegen während der Abarbeitung vor Methode der Klasse Object: void notify() Implementierung: Ein zufälliger Thread aus der Warteliste wird aktiviert. Er setzt seine Verarbeitung dort fort, wo er vorher aufgehört hat 27
28 Kommunikation zwischen Threads Manchmal müssen Threads kooperieren, z.b. ein Thread auf Ergebnisse eines anderen Threads warten. Fall 2: Ergebnisse liegen während der Abarbeitung vor Methode der Klasse Object: void notifyall() Aktiviert alle auf die Sperre wartenden Threads. Kann nur in einem synchronized-block verwendet werden Implementierung: Alle Threads aus der Warteliste werden aktiviert 28
29 Kommunikation zwischen Threads Manchmal müssen Threads kooperieren, z.b. ein Thread auf Ergebnisse eines anderen Threads warten. Beispiel: Sender und Empfänger Sender sendet Nachrichten in bestimmten Abständen Empfänger empfängt Nachrichten in bestimmten Abständen Nachrichtenpuffer ist beschränkt Sender muss warten, falls Puffer voll ist Empfänger muss warten, falls Puffer leer ist 29
30 Kommunikation zwischen Threads Manchmal müssen Threads kooperieren, z.b. ein Thread auf Ergebnisse eines anderen Threads warten. Beispiel: Sender und Empfänger [der Sender als Thread] class Sender extends Thread { private Puffer p; Sender(Puffer p){this.p=p; public void run(){ while(true){ try{sleep(1000);catch(exception e){ p.senden(); 30
31 Kommunikation zwischen Threads Manchmal müssen Threads kooperieren, z.b. ein Thread auf Ergebnisse eines anderen Threads warten. Beispiel: Sender und Empfänger [der Empfänger als Thread] class Empfaenger extends Thread { private Puffer p; Empfaenger(Puffer p){this.p=p; public void run(){ while(true){ p.empfangen(); try{sleep(1000);catch(exception e){ 31
32 Kommunikation zwischen Threads Manchmal müssen Threads kooperieren, z.b. ein Thread auf Ergebnisse eines anderen Threads warten. Beispiel: Sender und Empfänger [der Puffer] class Puffer { private static int nummer = 0; private Vector<String> nachrichten = new Vector<String>(); private int schranke = 10;... 32
33 Kommunikation zwischen Threads Manchmal müssen Threads kooperieren, z.b. ein Thread auf Ergebnisse eines anderen Threads warten. Beispiel: Sender und Empfänger [der Puffer: nur senden, falls Puffer nicht voll, nach Senden Empfänger aktivieren] class Puffer {... synchronized void senden(){ while (nachrichten.size()==schranke{ try{wait();catch(exception e){ nachrichten.addelement( + ++nummer); notifyall();... 33
34 Kommunikation zwischen Threads Manchmal müssen Threads kooperieren, z.b. ein Thread auf Ergebnisse eines anderen Threads warten. Beispiel: Sender und Empfänger [der Puffer: empfangen, falls Puffer nicht leer, nach Empfangen Sender benachrichtigen] class Puffer {... synchronized void empfangen(){ while (warten.size()==0){ try{wait();catch(exception e){ nachrichten.remove(0); notifyall();... 34
35 Kommunikation zwischen Threads Manchmal müssen Threads kooperieren, z.b. ein Thread auf Ergebnisse eines anderen Threads warten. Beispiel: Sender und Empfänger [Hauptprogramm] class Programm{ public static void main (String[] args){ Puffer p = new Puffer(); Thread send = new Sender(p); Thread receive = new Empfaenger(p); send.start(); receive.start(); 35
36 Verklemmungen Deadlock (Verklemmung) Ein Deadlock ist eine Situation, in der keine Aktion mehr ausgeführt wird (werden kann), obwohl ein Programm noch nicht beendet wurde Dormacy (für immer schlafende Threads) Dormacy ist eine Situation, in der es in einem Programm nur noch wartende Threads und keine aktiven mehr, so dass die wartenden Threads nie wieder aktiviert werden können Dormacy führt zu einem Deadlock 36
37 Verklemmungen Beispiel: Im einfachsten Fall kann es zu einem Deadlock kommen, wenn zwei Threads je ein Objekt gesperrt haben und auf die Freigabe der jeweils anderen Sperre warten: class Data {... public void method(data other){ synchronized(this){ synchronized(other){ Allgemein: Es existiert ein Zyklus in der Beziehung zwischen Objekten, die von verschiedenen Threads genutzt werden. 37
38 Verklemmungen Problem: Deadlocks sind schwer zu finden, da sie von einer konkreten Aufrufreihenfolge in verschiedenen Threads abhängen Deadlocks treten aufgrund des Nichtdeterminismus bei der Abarbeitung von Threads nicht zwingend auf, selbst wenn das Programm die Möglichkeit eines Deadlocks birgt. Daher ist der Kontext und die Aufrufgeschichte nötig, um einen Deadlock überhaupt beschreiben zu können Verwende für eine Darstellung einer solchen Aufrufgeschichte, z.b. Sequenzdiagramme 38
39 Sequenzdiagramme Parallele Verarbeitung und Synchronisation lassen sich mittels Sequendiagrammen darstellen synchronized(object o) Wird als synchrone Botschaft des Threads an o modelliert wait(), notify(), notifyall(): Werden als asynchrone Botschaften des gesperrten Objekts an sich selbst modelliert Wie lässt sich visualisieren, ob ein Thread wartet oder aktiv ist, und wenn er aktiv ist, für welches Objekt er das ist?: Schraffiere geeignet die Balken zur Visualisierung der Operationsdauern 39
Parallele Prozesse. Prozeß wartet
Parallele Prozesse B-66 Prozeß: Ausführung eines Programmes in seinem Adressraum (zugeordneter Speicher) Parallele Prozesse: gleichzeitig auf mehreren Prozessoren laufende Prozesse p1 p2 verzahnte Prozesse:
MehrPraktikum aus Softwareentwicklung 2, Stunde 5
Praktikum aus Softwareentwicklung 2, Stunde 5 Lehrziele/Inhalt 1. Threads Threads Threads sind parallele, oder auf Rechnern mit nur einer CPU quasi-parallele, Programmabläufe in Java. Sie können beispielsweise
MehrThread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen
Thread-Synchronisation in in Java Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen Die Klasse Thread Die Die Klasse Thread gehört zur zur Standardbibliothek von von
MehrSynchronisation in Java. Invisible Web
Synchronisation in Java Studienprojekt Invisible Web Tang Zhihong Synchronisation in Java Synchronisationsproblem Monitore Wait und notify PipedInputStream und PipedOutputStream Synchronisation von Collections
MehrNebenläufigkeit mit Java
Nebenläufigkeit mit Java Einheit 03: Synchronisation Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Synchronisation von Threads Locks Java Monitor-Konzept Lock Freigabe Zusammenspiel
MehrVerteilte Systeme CS5001
Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Client-Server-Anwendungen: Vom passiven (shared state) Monitor zum aktiven Monitor Monitor (Hoare, Brinch-Hansen,
MehrZur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus
Zur Erinnerung: Threads Programmierung (fortgeschrittene Konzepte) Threads, Monitore, Semaphore und speisende en Wolf-Ulrich Raffel (uli@wuraffel.de) Möglichkeiten, Threads zu definieren Bildung einer
Mehr5. Threads, Serverprozesse und Benachrichtigungen
5. Threads, Serverprozesse und Benachrichtigungen Threads allgemein Threads in Android: Handler und Messages Services: Local, Remote, Binding Benachrichtigungen Entwicklung mobiler Anwendungen Europäische
MehrDr. Monika Meiler. Inhalt
Inhalt 15 Parallele Programmierung... 15-2 15.1 Die Klasse java.lang.thread... 15-2 15.2 Beispiel 0-1-Printer als Thread... 15-3 15.3 Das Interface java.lang.runnable... 15-4 15.4 Beispiel 0-1-Printer
MehrThread-Konzept in objektorientierten Programmiersprachen. Threads. Threads in Java
Thread-Konzept in objektorientierten Programmiersprachen 1 Threads ein Thread ist ein eigenständiges Programmfragment, das parallel zu anderen Teilen eines Programmes ablaufen kann alle Threads eines Programmes
MehrParallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr
3. Übung Abgabe bis 10.11.2015, 10:00 Uhr Aufgabe 3.1: Java-Synchronisation a) An welchen Stellen im Code kann das Schlüsselwort synchronized verwendet werden? b) Wie nennt sich die Synchronisations-Art,
MehrBeispiel für überladene Methode
Beispiel für überladene Methode class Gras extends Futter {... abstract class Tier { public abstract void friss (Futter x); class Rind extends Tier { public void friss (Gras x) {... public void friss (Futter
MehrVersuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.
Hochschule Harz Versuch: fcopy Mit Java FB Automatisierung und Informatik Betriebssysteme Thema: Kopieren einer Datei unter der Kontrolle von Semaphoren Versuchsziele Konzepte der parallelen Programmierung
MehrKlausur Software-Entwicklung September 00
Aufgabe 1: Wahrheitstafeln ausgeben (ca. 8 Punkte) Matrikelnr : Ergänzen Sie in folgendem Programm, eine rekursive Funktion, die eine Boole'sche Wahrheitstafel für N Variablen ausgibt. Die Zahl N soll
MehrKapitel 5. Monitore und Synchronisationsbedingungen
Seite Kapitel 5 Monitore und Synchronisationsbedingungen Prof. Dr. Rolf Hennicker 5.6.24 5. Synchronisationsbedingungen Seite 2 Bisherige Verwendung von Monitoren: Verkapselung von Daten, Zugriffoperationen
MehrVersuchsziele. Grundlagen. Überblick: FB Automatisierung und Informatik Betriebssysteme Thema: Bounded-Buffer-Problem. 3.
Hochschule Harz 3. Labor Threads FB Automatisierung und Informatik Betriebssysteme Thema: Bounded-Buffer-Problem Versuchsziele Vertiefung im Verständnis der Thread- und Semaphor-Programmierung. Grundlagen
MehrÜbung zu Grundlagen der Betriebssysteme. 10. Übung 18.12.2012
Übung zu Grundlagen der Betriebssysteme 10. Übung 18.12.2012 Aufgabe 1 a) Was versteht man unter einem kritischen Abschnitt oder kritischen Gebiet (critical area)? b) Welche Aufgabe hat ein Semaphor? c)
MehrProzesse. Prozesse sind Programme. Prozesse können aus Unterprozessen bestehen. Prozesshierarchie Unterprozesse Threads
Threads Prozesse, Parallelität, Nebenläufigkeit, Threads, Erzeugung, Ausführung, Kommunikation, Interferenz, Kritischer Bereich, Deadlock, Synchronisation. Prozesse Prozesse sind Programme mehrere Prozesse
MehrMobile und Verteilte Datenbanken
Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2010/2011 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Java Remote Method Invocation (RMI) Realisierung
MehrEinführung in die Programmierung Blockkurs Java
Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()
Mehr2.2 Prozesse in Java
2.2 Prozesse in Java! Java sieht kein Schlüsselwort für Prozesse vor, sondern bestimmte Klassen und Schnittstellen. Mit anderen Worten: der Prozessbegriff wird mit Mitteln der Objektorientierung eingeführt.
MehrNebenläufige und verteilte Programme CS2301
Nebenläufige und verteilte Programme CS2301 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Netze mit aktiven und reaktiven Knoten Produzent Konsument: aktiv / passiv / reaktiv
MehrBeispiel Klausuraufgaben
Beispiel Klausuraufgaben HINWEIS: In diesem Dokument befinden sich mehrere Aufgaben. Es ist keine Beispielklausur. In der Klausur werden nur ca. 2 Aufgaben zu meinen Themengebieten (Nebenläufigkeit, Visuelle
MehrInformatik B - Objektorientierte Programmierung in Java. Vorlesung 21: Threads 2. Inhalt
Universität Osnabrück 1 wait und notify 3 - Objektorientierte Programmierung in Java Vorlesung 21: Threads 2 SS 2006 Prof. Dr. F.M. Thiesing, FH Osnabrück Neben dem Monitorkonzept stehen mit den Methoden
MehrVorlesung Informatik II
Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 11. UML: Sequenzdiagramm 1 Motivation Es
Mehr1 Fehler-Objekte: Werfen, Fangen, Behandeln
1 Fehler-Objekte: Werfen, Fangen, Behandeln Tritt während der Programm-Ausführung ein Fehler auf, wird die normale Programm-ausführung abgebrochen und ein Fehler-Objekt erzeugt (geworfen). Die Klasse Throwable
MehrAusnahmenbehandlung in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien
Ausnahmenbehandlung in Java Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien Was sind Exceptions? Eine Ausnahme (Exception) ist ein Objekt einer Unterklasse von Throwable Eine Ausnahme
MehrMusterlösungen zur Klausur Informatik 3
Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus
MehrKlausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)
Ein Prozess kann unmittelbar vom Zustand 1. Running in den Zustand Ready 2. Running in den Zustand Blocked 3. Ready in den Zustand Running Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition) Der Adressraum
MehrVS4 Slide 1. Verteilte Systeme. Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel
VS4 Slide 1 Verteilte Systeme Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel Inhaltsverzeichnis für die Vorlesung Zur Motivation: 4 Beispiele aus der Praxis Allgemeine Anforderungen an Verteilte
Mehr12. Threads in Java. Sequentielle Abarbeitung (2) Beispiel: Thread (1) Sequentielle Abarbeitung (1)
12. Threads in Java Einführendes Beispiel 12. Threads in Java 12. Threads in Java Einführendes Beispiel Sequentielle Abarbeitung (2) Ein Thread ist eine Folge von Anweisungen, die unabhängig von anderen
MehrMobile und Verteilte Datenbanken
Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2013/2014 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Kommunikations-Middleware Bietet höhere Kommunikations-Dienste
MehrDistributed Computing Group
JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird
MehrVerteilte Systeme. 2. Die Client-Server-Beziehung und daraus resultierende Techniken. 2.2 Nebenläufigkeitstechniken in Java
VS22 Slide 1 Verteilte Systeme 2. Die Client-Server-Beziehung und daraus resultierende Techniken 2.2 Nebenläufigkeitstechniken in Java Sebastian Iwanowski FH Wedel VS22 Slide 2 Was ist Nebenläufigkeit?
MehrDas Monitorkonzept Brinch-Hansen
Das Monitorkonzept (nach Hoare/Brinch Brinch-Hansen 1974) Nur ein Prozess bzw. Thread kann zu einem bestimmten Zeitpunkt im Monitor aktiv sein => gegenseitiger Ausschluss, mutual exclusion. Geschützte
MehrUniversität Karlsruhe (TH)
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Cluster-Praktikum Sommersemester 2007 Transparent Replizierte Objekte in JavaParty Institut für Programmstrukturen und Datenorganisation
MehrInnere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.
Innere Klassen Innere Klassen Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Literatur: Java Tutorial & Arnold, K., Gosling, J. und Holmes,D... Page 1 Innere Klassen Der erste
MehrGrafische Benutzeroberflächen
Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Aufgabe Ein Benutzer soll zwei Zahlen in ein Programm
MehrJava-Programmierung. Remote Method Invocation - RMI
Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 04: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von
MehrThreads In dieser Übung beschäftigen wir uns mit der Realisierung von Threads in Java.
Threads In dieser Übung beschäftigen wir uns mit der Realisierung von Threads in Java. Aufgabe 1: Erzeugen und Starten von Threads a) Sei BankKunde eine von einer Klasse Kunde abgeleitete Klasse. Erweitern
MehrJava Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7
Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck
MehrAusgewählte Implementierungsprobleme
Ausgewählte Implementierungsprobleme Rebecca Tiarks 18. Dezember 2008 1 / 30 Inhaltsverzeichnis 1 2 3 Persistenzproblem & CSV Binärformat 2 / 30 Themenübersicht 1 18. Dez: + 2 8. Jan. Swing 3 15. Jan TCP,
Mehr15 Fehlerobjekte: Werfen, Fangen, Behandeln
Tritt während der Programm-Ausführung ein Fehler auf, wird die normale Programm-ausführung abgebrochen und ein Fehlerobjekt erzeugt (geworfen). Die Klasse Throwable fasst alle Arten von Fehlern zusammen.
MehrProgrammiermethodik. Übung 10
Programmiermethodik Übung 10 Sommersemester 2011 Fachgebiet Software Engineering andreas.koch@cs.uni-kassel.de Agenda Vorstellung Musterlösung HA 6 Client/Server Kommunikation in Java Vorstellung HA 7
MehrGrafische Benutzeroberflächen
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
Mehr6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
MehrProgrammiermethodik. Übung 13
Programmiermethodik Übung 13 Sommersemester 2010 Fachgebiet Software Engineering andreas.scharf@cs.uni-kassel.de Agenda Vorstellung Musterlösung HA9 Mancala Showroom Client/Server Kommunikation in Java
MehrEinstieg in die Informatik mit Java
Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere
MehrVorname: Nachname: Matrikelnummer: Klausur. Betriebssysteme
Vorname: Nachname: Matrikelnummer: Klausur Betriebssysteme 12.02.2013 Hinweise: 1. Beschriften Sie als erstes diese Seite mit Ihrem Namen, Vornamen und Ihrer Matrikelnummer (deutlich in Druckbuchstaben).
MehrMonitore. Klicken bearbeiten
Sascha Kretzschmann Institut für Informatik Monitore Formatvorlage und deren Umsetzung des Untertitelmasters durch Klicken bearbeiten Inhalt 1. Monitore und Concurrent Pascal 1.1 Warum Monitore? 1.2 Monitordefinition
MehrMusterlösung Übungsblatt 2 Netzprogrammierung WS 05/06
Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06 Aufgabe 1 Bitte schreiben Sie ein RMI Objekt, das eine Person repräsentiert. Es soll die folgende Schnittstelle implementieren: public interface Person
MehrSystem.out.println("TEXT");
Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class
MehrMultithreading ab Java 5: Die neuen Concurrency APIs
Multithreading ab Java 5: Die neuen Concurrency APIs Java Concurrency Spezifiziert in JSR166 Ab Java 5 fester Bestandteil von Java Durch zusätzliche Library auch vor Java 5 vorhanden backport-util-concurrent
MehrRemote Method Invocation
Remote Method Invocation spezielle Technik aus dem Java-Umfeld Ausführung der Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VM s Aufruf
MehrArbeitsblätter für die Lehrveranstaltung OOP JAVA 1
Fachhochschule Stralsund Fachbereich Maschinenbau Lehrgebiet Informatik Prof. Dr.-Ing. Ch.Wahmkow Arbeitsblätter für die Lehrveranstaltung OOP I. Aufbau eines Java-Programmes JAVA 1 Escape-Sequenzen zur
MehrAufgabe 1: Objekte, Klassen, Vererbung (15 Punkte)
Klausur zum Kurs 1618 im Sommersemester 2002 am 10.8.2002 1 Aufgabe 1: Objekte, Klassen, Vererbung (15 Punkte) Was ist der Unterschied zwischen a) einem Objekt und einer Klasse? b) der Instanz einer Klasse
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1
Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrAusdrucksbäume in verschiedenen Darstellungen
Ausdrucksbäume in verschiedenen Darstellungen SWE-42 Infix mit notwendigen Klammern: (a + b) / (c - d) Infix vollständig geklammert: (((a) + (b)) / ((c) - (d))) Postfix a b + c d - / Präfix / + a b - c
MehrLeJOS: Mindstorms in Java programmieren
LeJOS: Mindstorms in Java programmieren Alexander Koller Softwareprojekt "Sprechende Roboter" 30. April 2004 Überblick Warum Java? Was ist LeJOS? Motoren steuern Auf Sensoreingaben reagieren Wie geht's
MehrProf. Dr. Uwe Schmidt. 21.August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (BInf 211, BTInf 211, BMInf 211, BWInf 211)
Prof. Dr. Uwe Schmidt 21.August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (BInf 211, BTInf 211, BMInf 211, BWInf 211) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen
MehrNebenläufige Programmierung I
Nebenläufige Programmierung I Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Piotr Kosiuczenko, Dirk Pattinson 07/03 Ziele 2 Grundlegende Begriffe der nebenläufigen Programmierung verstehen lernen
MehrParallele Programmierung in Java
PPJ-1 Parallele Programmierung in Java Prof. Dr. Uwe Kastens Sommersemester 2000 Vorlesung Parallele Programmierung in Java SS 2000 / Folie 01 PPJ-2 Ziele und Durchführung Die Studierenden sollen grundlegende
MehrUniversität Karlsruhe (TH)
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Das Java-Speichermodell Prof. Dr. Walter F. Tichy Dr. Victor Pankratius Ali Jannesari Geschichte des Speichermodells Kapitel 17 der Java-Sprachdefinition
MehrDas erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und
MehrBeispiel: DB-Mock (1/7)
Beispiel: DB-Mock (1/7) Aufgabe: DB, auf die vereinfachend nur lesend zugeriffen wird mocken warum: benötigte keine DB-Lizenz, garantiert gleiche Werte ohne aufwändiges reset, kein Zeitverlust durch Verbindungsaufbau
MehrBetriebssysteme G: Parallele Prozesse (Teil A: Grundlagen)
Betriebssysteme G: Parallele Prozesse (Teil A: Grundlagen) 1 Prozesse Bei Betriebssystemen stoßen wir des öfteren auf den Begriff Prozess als wahrscheinlich am häufigsten verwendeter und am unklarsten
MehrName: Matrikelnr : Aufgabe 1: (ca. 8 Punkte )
Name: Aufgabe 1: (ca. 8 Punkte ) Matrikelnr : In einem Array int a = new int[1000] ; befinden sich 1000 verschiedene Zahlen. Schreiben Sie eine Funktion, die das Array als Parameter übergeben bekommt und
MehrJava Real-Time Specification
Ausgewählte Kapitel eingebetteter Systeme Java Real-Time Specification Tobias Distler 05.07.2006 Java und Echtzeit? Problem Nichtdeterministisches Verhalten der Garbage Collection Weitere Nachteile Scheduling
MehrKlausur zur Vorlesung Verteilte Systeme im SS 2007 Prof. Dr. Odej Kao 24. Juli 2007
Klausur zur Vorlesung Verteilte Systeme im SS 2007 Prof. Dr. Odej Kao 24. Juli 2007 Name: Vorname: Matrikelnummer: Studiengang: E-Mail: Schreiben Sie zunächst sofort Ihren Namen und Matrikelnummer auf
MehrJava : Fehlerbehandlung.
Java : Fehlerbehandlung Prinzip Callerklassen / Workerklassen Arbeitet... Callerklasse Arbeitet... Workerklasse Arbeitet... Arbeitet weiter... Fer7g! Prinzip Callerklassen / Workerklassen Main- Methode
MehrNebenläufige Programmierung I
Nebenläufige Programmierung I Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS06 2 Ziele Grundlegende Begriffe der nebenläufigen Programmierung verstehen lernen Nebenläufige Programme
MehrKlausur Grundlagen der Programmierung
Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel
MehrInnere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11
Mehr2A Basistechniken: Weitere Aufgaben
2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen
MehrJava Einführung Exception Handling. Kapitel 17
Java Einführung Exception Handling Kapitel 17 Inhalt Was sind Exceptoins? Wie werden sie ausgelöst? Wie kann man Exceptions behandeln? Erweiterung von Exceptions Spezialfall IO 2 Ausnahmezustände Im Ablauf
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 05: Weitere Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Weitere Kontrollstrukturen Wiederholungsstrukturen (Schleifen) While-,do-,for-Schleifen
MehrKlausur zur Informatik A WS 2001/2002 Name: Korrektor: Punkte: a) Zeichnen Sie zu der nachstehenden Syntax in EBNF die passenden Syntaxdiagramme.
Aufgabe 1 a) Zeichnen Sie zu der nachstehenden Syntax in EBNF die passenden Syntaxdiagramme. Drei0 ::= 0 3 6 9 Drei1 ::= 1 4 7 Drei2 ::= 2 5 8 Drei ::= Drei0 Drei0 Drei1 Drei2 Drei2 Drei1 b) Gegeben sei
MehrKontrollstrukturen: Wiederholungsanweisungen
Kontrollstrukturen: Wiederholungsanweisungen Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-16-17/infoeinf WS16/17 Action required now 1.
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
MehrALP II Dynamische Datenmengen
ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung
MehrAbgabe: (vor 12 Uhr) Aufgabe 12.1 (P) Siedlerspiel
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 12 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,
MehrBetriebssysteme. Wintersemester 2015. Kapitel 2 Prozess und Threads. Patrick Kendzo ppkendzo@gmail.com
Betriebssysteme Wintersemester 2015 Kapitel 2 Prozess und Threads Patrick Kendzo ppkendzo@gmail.com Programm Inhalt Einleitung Prozesse und Threads Speicherverwaltung Eingabe und Ausgabe Dateisysteme Zusammenfassung
MehrVererbung und Polymorphie
Vererbung und Polymorphie Aufgabe 1: Vererbungsbaum entwerfen a) Finden Sie sinnvolle Beziehungen. Füllen Sie die letzten Spalten aus. Hinweis: Es kann nicht alles mit etwas anderem verbunden werden. Klasse
MehrAufgabe 1.90: Ein Geschäft gibt ihren Kunden unterschiedliche Rabatte. Schreiben ein Programm, das folgende Rabattklassen vorsieht:
Aufgabe 1.90: Ein Geschäft gibt ihren Kunden unterschiedliche Rabatte. Schreiben ein Programm, das folgende Rabattklassen vorsieht: o Klasse 0: kein Rabatt o Klasse 1: 4,5 % Rabatt o Klasse 2: 8,75% Rabatt
MehrGrundlagen der Programmierung Prof. H. Mössenböck. 16. Ausnahmen (Exception Handling)
Grundlagen der Programmierung Prof. H. Mössenböck 16. Ausnahmen (Exception Handling) Motivation Fehler können nicht immer dort behandelt werden, wo sie auftreten void p() { q(); Lösung void q() { r();
Mehr! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.
! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur
MehrElementare Konzepte von
Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)
MehrEinführung in die Programmierung mit Java
Einführung in die Programmierung mit Java Teil 15: Wiederholung Martin Hofmann Steffen Jost LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 3. Februar 2016
MehrEingabe und Ausgabe in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien
Eingabe und Ausgabe in Java Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien Eingabe Beispiel1 public class Input1 { public static void main(string[] args) { for (int i = 0; i < args.length;
MehrAllgemeine Hinweise:
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 12/13 Einführung in die Informatik I Wiederholungsklausur Prof. Dr. Helmut Seidl, A. Lehmann,
MehrAllgemeine Hinweise:
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Endtermklausur Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,
MehrBeispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf
16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen
MehrParallele und verteilte Anwendungen in Java
Parallele und verteilte Anwendungen in Java Bearbeitet von Rainer Oechsle 3., erweiterte Auflage 2011. Buch. 416 S. Hardcover ISBN 978 3 446 42459 3 Format (B x L): 20,3 x 24,5 cm Gewicht: 1068 g Weitere
MehrUniversität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 18. Oktober 2003 Stefan Fischer, Dr.
Universität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 18. Oktober 2003 Stefan Fischer, Dr. Martin Müller Informatik II 2. Semesterklausur Prüfungsmodul Informatik II
Mehr9. Vorlesung Betriebssysteme
Dr. Christian Baun 9. Vorlesung Betriebssysteme Hochschule Mannheim WS1213 1/39 9. Vorlesung Betriebssysteme Dr. Christian Baun Hochschule Mannheim Fakultät für Informatik wolkenrechnen@gmail.com Dr. Christian
MehrDelegatesund Ereignisse
Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
Mehr