Institut fu r Informatik

Größe: px
Ab Seite anzeigen:

Download "Institut fu r Informatik"

Transkript

1 Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Praktikum: Grundlagen der Programmierung Prof. B. Rost, L. Richter WS Aufgabenblatt Januar Threads 9.1 (U ) Allgemeine Fragen (a) Was sind Threads und wozu dienen sie? (b) Aus mindestens wievielen Threads besteht jedes Programm? (c) Was macht der folgende Java-Code? Wie und wo wird hier ein Thread erzeugt? Wann enden beide Threads? public class HelloWorldRunner implements Runnable System. out. println ( " Hello World! My Name is " + Thread. currentthread (). getname () ); Thread t = new Thread ( new HelloWorldRunner ()); t. start (); (d) Was wa re anders, wenn anstelle von t.start() die Methode t.run() aufgerufen werden wu rde? (e) Laufen Threads grundsa tzlich echt parallel ab? Du rfen Sie Annahmen u ber die Laufzeit eines Threads machen? (f) Kann die Ausfu hrung von Threads jederzeit, d.h. insbesondere an jeder beliebigen Stelle eines Programms, unterbrochen werden? Betrachten Sie hierzu die Ausgabe des folgenden Beispielcodes: public class VerboseThread implements Runnable { private int id ; public VerboseThread ( int id ) { this. id = id ; 1

2 @Override while (! Thread. interrupted ()) { System. out. print (" Thread " + id + " says : "); System. out. println ("I am thread " + id ); Thread tone = new Thread ( new VerboseThread ( 1)); Thread ttwo = new Thread ( new VerboseThread ( 2)); tone. start (); ttwo. start (); //... (g) Was machen die Methoden Thread.sleep(long millis), Thread.yield() und Thread.join()? Wozu dient in diesem Zusammenhang eine InterruptedException? (h) Sowohl Thread.sleep() als auch Thread.yield() sind statische Methoden. Auf welchen Thread wirkt sich der Aufruf dieser Methoden aus? Betrachten Sie hierzu beispielsweise die Methoden run() und main() aus Teilaufgabe (c). (i) Diskutieren Sie den folgenden Code-Ausschnitt. Was macht dieses Programm? Vergegenwärtigen Sie sich die verschiedenen Ausführungsstränge! Wie werden die Threads beendet? public class WaitThread implements Runnable { while (! Thread. interrupted ()) { try { System. out. println ("I am still alive. I will sleep for a second... "); // Sleep for _about_ a second. Thread. sleep (1000); catch ( InterruptedException e) { Thread. currentthread (). interrupt (); System. out. println ("I ve been interrupted and will terminate myself."); Thread t = new Thread ( new WaitThread ()); t. start (); try { Thread. sleep (3000); catch ( InterruptedException e) { finally { // Tell the thread t to terminate. t. interrupt (); 2

3 9.2 (Ü) Hallo Echo... Im Folgenden sollen Sie ein Programm schreiben, dass Ihnen zu einer Eingabe ein virtuelles Echo erzeugt. Die eingegebene Zeichenkette soll dabei sekündlich auf der Konsole wiederholt werden, wobei die Zeichenkette bei jeder Wiederholung um zwei Zeichen von vorne verkürzt wird. Beispielsweise soll die Eingabe Hallo Echo die folgende Ausgaben erzeugen: llo Echo o Echo Echo ho Echo von einer einzelnen Eingabe Um das Echo für eine Zeichenkette zu erzeugen, soll ein Thread verwendet werden. Die Implementierung soll dabei in der Klasse Echo erfolgen, die das Interface Runnable implementiert und deren Konstruktor die zu wiederholende Zeichenkette übergeben bekommt. In der Methode run() soll der Thread jeweils eine Sekunde pausieren, bevor die nächste verkürzte Zeichenkette ausgegeben wird. Sobald die Zeichenkette soweit verkürzt ist, dass nichts mehr ausgegeben wird, soll sich der Thread von selbst beenden. Der Rumpf für das Einlesen einer Zeichenkette ist bereits in der main()-methode vorhanden. Nach dem Einlesen soll für die eingelesene Zeichenkette der Echo-Thread erzeugt und gestartet werden. Testen Sie Ihr Programm nun mit verschiedenen Eingaben. Echo von mehreren Eingaben Nun soll das Programm so erweitert werden, dass auch mehrere Eingaben hintereinander erlaubt sind, für die jeweils ein entsprechendes Echo erzeugt wird. Wenn die Eingaben schnell genug hintereinander stattfinden, sollte dies zu einer Verschachtelung der Echos führen. Ändern Sie die main()-methode so ab, dass solange Zeichenketten eingelesen und der dazugehörige Thread erzeugt und gestartet werden, bis der Benutzer stop eingibt. Testen Sie wiederum ihr Programm mit verschiedenen Eingaben und prüfen Sie, ob Ihr Programm beendet wird, sobald Sie stop eingeben. Beenden aller Threads Falls Sie stop eingegeben haben, während ein Echo noch wiederholt wurde, werden Sie bemerkt haben, dass zwar die main()-methode dadurch beendet wurde, die übrigen Threads aber solange fortgesetzt wurden, bis sämtliche Echo-Threads vollständig ausgeführt wurden. Ändern Sie Ihr Programm nun so ab, dass bei der Eingabe von stop alle Threads inklusive der Echos unmittelbar beendet werden. Merken Sie sich dazu alle erzeugten Echo-Threads in einer Liste und teilen Sie beim Beenden des Programms allen Threads mit Hilfe der Methode interrupt() mit, dass sie sich selbst beenden sollen. Ändern Sie die Methode run() entsprechend so ab, dass der Thread sich nach dem Interrupt selbst beendet. 3

4 9.3 (Ü) Synchronisation (a) Welche Werte können Threads untereinander lesen und schreiben? (b) Worauf muss beim Zugriff auf gemeinsam genutzte Variablen und Objekte geachtet werden? (c) Was bezeichnet der Begriff Race Condition? Nennen Sie Beispiele für Fehler, die in diesem Zusammenhang auftreten können. (d) Was bezeichnet hierbei einen kritischen Abschnitt? Wie werden die kritschen Abschnitte in den beiden nachfolgenden Beispielen geschützt? public class TicketBooking implements Runnable { protected static int globalticketcount = 10; protected int ticketstobuy ; public TicketBooking ( int numticketstobuy ) { ticketstobuy = numticketstobuy ; protected static synchronized boolean buytickets ( int numtickets ) { if ( globalticketcount >= numtickets ) { globalticketcount -= numtickets ; return true ; return false ; if (! buytickets ( ticketstobuy ) ) System. out. println (" Sorry, not enough tickets available!"); Thread t1 = new Thread ( new TicketBooking (4) ); Thread t2 = new Thread ( new TicketBooking (3) ); t1. start (); t2. start (); class TicketBooking2 implements Runnable { protected static Integer globalticketcount = 10; protected int ticketstobuy ; public TicketBooking2 ( int numticketstobuy ) { ticketstobuy = numticketstobuy ; synchronized ( globalticketcount ) { if ( globalticketcount >= ticketstobuy ) { globalticketcount -= ticketstobuy ; 4

5 else { System. out. println (" Sorry, not enough tickets available!"); Thread t1 = new Thread ( new TicketBooking2 (4) ); Thread t2 = new Thread ( new TicketBooking2 (3) ); t1. start (); t2. start (); 9.4 (Ü) Kekse In dieser Aufgabe sollen Sie ein einfaches Producer-Consumer-Szenario in einem NetBeans-Projekt namens Cookies realisieren. Nehmen Sie dazu an, dass eine Grossmutter immer dann einen Keks bäckt, sofern sie weniger als 30 Kekse im Haus hat. Sobald ein Keks fertig ist, legt sie diesen auf einen Stapel. Ihre vielen Enkel konkurrieren um diesen Stapel, indem sie pausenlos jeweils einen Keks vom Stapel nehmen, sofern letzterer nicht leer ist, und diesen essen. (a) Programmieren Sie eine Klasse Cookie, die eine Methode void eat() bereitstellt. Diese Methode soll den Text "Om nom nom" auf der Konsole ausgeben. (b) Programmieren Sie eine Klasse Granny, die eine Referenz auf einen generischen Stapel von Cookies speichert, die sie als einziges Konstruktorargument übergeben bekommt. Die Klasse Granny soll von Thread erben. Überschreiben Sie die run-methode von Thread und implementieren Sie eine Endlosschleife, in der laufend neue Kekse produziert und auf dem Stapel abgelegt werden. (c) Programmieren Sie eine Klasse Grandchild, die eine Referenz auf einen generischen Stapel von Cookies speichert, die sie als einziges Konstruktorargument übergeben bekommt. Die Klasse Grandchild soll von Thread erben. Überschreiben Sie die run-methode von Thread und implementieren Sie eine Endlosschleife, in der laufend ein Keks cookie vom Stapel genommen und dann durch Aufruf von cookie.eat() gegessen wird, sofern der Stapel nicht leer ist. (d) Programmieren Sie nun eine main-methode, in der sie zunächst einen leeren Keksstapel und danach einen Grossmutter- sowie fünf Kinderthreads anlegen. Starten Sie anschliessend alle Threads. Einer oder mehrere Kind-Threads werden recht schnell mit einer EmptyStackException abstürzen. Warum? (e) Schreiben Sie das Programm um, so dass endlos Plätzchen produziert und konsumiert werden, ohne dass ein Thread abstürzt. 5

6 9.5 (Ü) Semaphor Semaphoren sind Datenstrukturen, die dem Schutz gemeinsam genutzter Ressourcen dienen. Neben einem internen Zähler, der die Anzahl noch verfügbarer Ressourcen angibt, stellen Sie zwei Methoden bereit, die jeweils dazu dienen, eine weitere Ressource exklusiv zu belegen oder eine bereits belegte Ressource wieder freizugeben. Dabei ist es besonders wichtig, dass diese Methoden atomar sind, d.h. dass sie nicht unterbrochen werden können. In diesem Zusammenhang haben Sie in Java bereits das Schlüsselwort synchronized kennengelernt, das alle anderen, ebenfalls mit Hilfe von synchronized gekennzeichneten Bereiche eines Objekts exklusiv reserviert. Während synchronized implizit nur eine einzelne Ressource (nämlich das entsprechende Objekt) verwaltet, ist es mit Hilfe eines Semaphors möglich, beliebig viele Ressourcen ohne besonderen Aufwand zu kontrollieren. Ein weiterer Vorteil ist die Vermeidung von Busy Waiting und mithin Verschwendung von Rechenzeit, indem anfragende Threads im Falle dessen, dass gerade keine Ressource mehr verfügbar ist, automatisch solange schlafengelegt werden, bis wieder Ressourcen freigeworden sind. (a) Erweitern Sie das gegebene NetBeans-Projekt Semaphore um eine Klasse Semaphore, die in einer ganzzahligen Variable die Anzahl noch verfügbarer Ressourcen verwaltet. Diese Variable darf nach aussen und auch für womögliche Unterklassen nicht sichtbar sein. Die Anzahl der anfänglich verfügbaren Ressourcen soll mit Hilfe des Konstruktors initialisiert werden können. (b) Implementieren Sie eine Objektmethode p(), die die Anzahl verfügbarer Ressourcen um eins dekrementiert und dann zum Aufrufer zurückkehrt, sofern noch mindestens eine Ressource verfügbar war. Für den Fall, dass keine Ressource mehr zur Verfügung stand, soll die Methode mit Hilfe von wait() solange warten, bis wieder eine Ressource frei wird und erst dann zum Aufrufer zurückkehren. Schützen Sie kritische Bereiche mit synchronized und bedenken Sie, dass Sie beim Aufruf von wait() Ihre exklusive Reservierung (den Monitor) solange aufgeben, bis Sie durch ein entsprechendes notify() aus dem Wartezustand wieder aufgeweckt werden. (c) Implementieren Sie eine Objektmethode v(), die eine Ressource freigibt, indem Sie die Anzahl verfügbarer Ressourcen um eins inkrementiert. Falls ausserdem andere Threads darauf warten, dass eine Ressource frei wird, benachrichtigen Sie entsprechend einen davon mit Hilfe von notify(). Überlegen Sie sich dazu, wie Sie erkennen können, ob bereits mindestens ein anderer Thread auf eine Ressource wartet. Testen Sie Ihre Implementierung durch die gegebene main-methode in der Klasse Producer. 6

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Aufgabenblatt 11 Prof. R. Westermann, A. Lehmann,

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 11 Prof. R. Westermann, A. Lehmann,

Mehr

OOP: Nebenläufigkeiten Threads. Dipl.-Inform. Arnold Willemer

OOP: Nebenläufigkeiten Threads. Dipl.-Inform. Arnold Willemer OOP: Nebenläufigkeiten Threads Dipl.-Inform. Arnold Willemer arnold.willemer@hs-flensburg.de Schlafen für Profis Die C-64-Lösung kocht und blockiert den Prozessor while (!fertig) // nichts tun: busy waiting

Mehr

Wintersemester 2009/10 Helmut Seidl Institut für Informatik TU München

Wintersemester 2009/10 Helmut Seidl Institut für Informatik TU München Informatik2 Wintersemester 2009/10 Helmut Seidl Institut für Informatik TU München 1 0 Allgemeines Inhalt dieser Vorlesung: Nebenläufigkeit in Java; Funktionales Programmieren mit OCaml :-) 2 1 Threads

Mehr

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2014/15 Aufgabenblatt 11 19.01.2015

Mehr

Nebenläufige Programmierung in Java: Threads

Nebenläufige Programmierung in Java: Threads Nebenläufige Programmierung in Java: Threads Wahlpflicht: Fortgeschrittene Programmierung in Java Jan Henke HAW Hamburg 10. Juni 2011 J. Henke (HAW) Threads 10. Juni 2011 1 / 18 Gliederung 1 Grundlagen

Mehr

Javakurs für Fortgeschrittene

Javakurs für Fortgeschrittene Javakurs für Fortgeschrittene Einheit 07: Nebenläufigkeit Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Einführung in die Nebenläufigkeit und Java Thread Konzept: Motivation

Mehr

Erste Java-Programme (Scopes und Rekursion)

Erste Java-Programme (Scopes und Rekursion) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Scopes und Rekursion) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

Programmieren II. Nebenläufigkeit. Vorlesung 9. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester Threads. Kritische Bereiche

Programmieren II. Nebenläufigkeit. Vorlesung 9. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester Threads. Kritische Bereiche Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 24 Threads Kritische Bereiche Reales Beispiel 2 / 24 Nebenläufigkeit Moderne Betriebssysteme unterstützen das Prinzip der

Mehr

Parallele Prozesse. Prozeß wartet

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:

Mehr

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält

Mehr

Info B VL 17: Deadlocks

Info B VL 17: Deadlocks Info B VL 17: Deadlocks Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 17: Deadlocks p.327 Conditional

Mehr

Vorlesung Informatik II

Vorlesung 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 16. Java: Threads für Animationen 1 Motivation

Mehr

Aufgabenblatt 6 Musterlösung

Aufgabenblatt 6 Musterlösung Prof. Dr. rer. nat. Roland Wismüller Aufgabenblatt 6 Musterlösung Vorlesung Betriebssysteme I Wintersemester 2018/19 Aufgabe 1: Implementierung von Threads (Bearbeitung zu Hause) Der größte Vorteil ist

Mehr

Testen nebenläufiger Objekte

Testen nebenläufiger Objekte Testen nebenläufiger Objekte Threads in Java Julian Lambertz Seminar Tests in Informatik und Statistik im SS 2004 Universität Ulm J.L., Juni 2004 1 Themenüberblick Einleitung Begriff der Nebenläufigkeit

Mehr

Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010

Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010 Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung Prof. R. Westermann Endterm Klausur zu Informatik I 20. Februar 2010 ˆ Die Arbeitszeit beträgt 120

Mehr

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2013/14 Aufgabenblatt 5 2. Dezember

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann

Mehr

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2015/16 Aufgabenblatt 5 16.11.2015

Mehr

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr

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

Mehr

Lebenszyklus von Threads

Lebenszyklus von Threads Threads Umgangssprachlich Faden, Diskussionsfaden, Gewinde, Faser, Garn, roter Faden Threads ermöglichen Nebenläufigkeit (parallele Ausführung von Anwendungsteilen). Typisch für Threads ist,dass sie zu

Mehr

Nebenläufigkeit mit Java

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

Mehr

Einführung Verteilte Systeme - Java Threads I -

Einführung Verteilte Systeme - Java Threads I - Einführung Verteilte Systeme - Java Threads I - Prof. Dr. Michael Cebulla 20. November 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 38 M. Cebulla Verteilte Systeme Gliederung Wiederholung:

Mehr

Java Concurrency Utilities

Java Concurrency Utilities Java Concurrency Utilities Java unterstützt seit Java 1.0 Multithreading Java unterstützt das Monitorkonzept mittels der Schlüsselworte synchronized und volatile sowie den java.lang.object Methoden wait(),

Mehr

Praktikum aus Softwareentwicklung 2, Stunde 5

Praktikum 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

Mehr

Nebenläufigkeit mit Java

Nebenläufigkeit mit Java Nebenläufigkeit mit Java Einheit 01: Einführung in das Java-Threadkonzept Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Organisatorisches Ziele, Aufbau und Inhalte Zielgruppe,

Mehr

Programmierung mit Threads in Java

Programmierung mit Threads in Java Programmierung mit Threads in Java Harald Kosch and Matthias Ohlenroth Institut für Informationstechnologie Universität Klagenfurt H. Kosch Threads in Java 1 Inhalt Grundlagen: Threads und Datenlokalität

Mehr

Dr. Monika Meiler. Inhalt

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

Mehr

(b.) Welche Möglichkeit gibt es, die Methode run so zu verändern, dass Bora Bora IMMER zuletzt ausgegeben wird?

(b.) Welche Möglichkeit gibt es, die Methode run so zu verändern, dass Bora Bora IMMER zuletzt ausgegeben wird? Threads - Seite 1 Threads (1.) (a.) Nehmen Sie das Beispiel 2 von der Folie und ändern Sie dies ab, so dass sie z.b. ein Array von 100 Threads starten können! Testen Sie aber zunächst ihren Kode mit einem

Mehr

Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt

Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt 13 30.1.2017 Threads II Aufgabe 13.1. Synchronisiertes Lesen und Schreiben Betrachten

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Ausnahmebehandlung und Nebenläufigkeit 9. Vorlesung am 15. Dezember 2010 Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Universität Potsdam Institut für Informatik Sommersemester Programmierung. Lehrblatt Woche 11

Universität Potsdam Institut für Informatik Sommersemester Programmierung. Lehrblatt Woche 11 Universität Potsdam Institut für Informatik Sommersemester 2014 Programmierung Lehrblatt Woche 11 1 Applets In den letzten Wochen haben Sie die graphische Programmierung kennengelernt. Um Java-Programme

Mehr

Wirtschaftsinformatik II Sommersemester Lo sungshinweise zu den Ü bungen P. Mandl, M. Dolag, B. Rottmüller, et al.

Wirtschaftsinformatik II Sommersemester Lo sungshinweise zu den Ü bungen P. Mandl, M. Dolag, B. Rottmüller, et al. Wirtschaftsinformatik II Sommersemester 2016 Lo sungshinweise zu den Ü bungen 2-6 @Prof. P. Mandl, M. Dolag, B. Rottmüller, et al. Seite 1 / 6 Übung 2 Verwendung von Java-Threads Ableitung von Klasse Thread

Mehr

5. Threads, Serverprozesse und Benachrichtigungen

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

Mehr

Ausnahmebehandlung in Java

Ausnahmebehandlung in Java Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A { void foo() throws Help { if (helpneeded()) throw new Help();... try {... catch (Help e) {... catch (Exception

Mehr

Parallele Prozesse Prozeß Parallele Prozesse verzahnte Prozesse Nebenläufige Prozesse: Threads Vorlesung Software-Entwicklung / Folie 131 Ziele:

Parallele Prozesse Prozeß Parallele Prozesse verzahnte Prozesse Nebenläufige Prozesse: Threads Vorlesung Software-Entwicklung / Folie 131 Ziele: Parallele Prozesse SWE-131 Prozeß: Ausführung eines sequentiellen Programmstückes in dem zugeordneten Speicher (Adressraum). Veränderlicher Zustand: Speicherinhalt und Programmposition. Parallele Prozesse:

Mehr

Nebenläufigkeit mit Java

Nebenläufigkeit mit Java Nebenläufigkeit mit Java Einheit 02: Eigenschaften & kritische Abläufe Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Eigenschaften von Threads Name, Priorität, Zustand Zustandsübergänge

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Semestralklausur Einführung in die Programmierung Semestralklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList

Mehr

Übung zu Grundlagen der Betriebssysteme. 10. Übung 18.12.2012

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

Mehr

Aufgabe 9 Threads [12]

Aufgabe 9 Threads [12] Aufgabe 9 Threads [12] a) Teilaufgaben: Antworten u. Grafiken größtenteils den Vorlesungsfolien von A. Brüggemann-Klein entnommen. a. Erläutern Sie die Zustände ready, running, sleeping, dead, in denen

Mehr

Informatik II. Semesterklausur

Informatik II. Semesterklausur Universität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 5. Juli 2003 Stefan Fischer, Dr. Martin Müller Informatik II Semesterklausur Prüfungsmodul Informatik II (SS 2003)

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

parallele Prozesse auf sequenziellen Prozessoren Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher.

parallele Prozesse auf sequenziellen Prozessoren Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher. Threads parallele Prozesse auf sequenziellen Prozessoren Prozesse und Threads Es gibt zwei unterschiedliche Programme: Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher. Ein Thread

Mehr

Programmierung für Mathematik HS11

Programmierung für Mathematik HS11 software evolution & architecture lab Programmierung für Mathematik HS11 Übung 8 1 Aufgabe: Codeverständnis (Repetition) 1.1 Lernziele 1. Code verstehen können. 2. Fehler im Code finden und korrigieren

Mehr

Laborskript Verteilte Systeme

Laborskript Verteilte Systeme Laborskript Verteilte Systeme Nebenläufigkeit in Java Prof. Dr. Oliver Haase 1 Threads Java bietet zwei verschiedene Arten an, Threads zu erzeugen und zu starten: Entweder durch Erweitern der Klasse Thread,

Mehr

Prozesse. Prozesse sind Programme. Prozesse können aus Unterprozessen bestehen. Prozesshierarchie Unterprozesse Threads

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

Mehr

Ausgewählte Implementierungsprobleme

Ausgewä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,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Tag 8 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java) Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober 2001 Stefan Holland Informatik II Hinweise: Klausur II Verwenden Sie für Ihre Lösungen ausschließlich

Mehr

System.out.println("TEXT");

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

Mehr

Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen

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

Mehr

Aufgabenblatt 8 Musterlösung

Aufgabenblatt 8 Musterlösung Prof. Dr. rer. nat. Roland Wismüller Aufgabenblatt 8 Musterlösung Vorlesung Betriebssysteme I Wintersemester 2017/18 Aufgabe 1: Erzeuger-Verbraucher Synchronisation (Bearbeitung in der Übungsstunde) Erzeuger-Verbraucher-Problem:

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2006/2007 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 11 F. Forster,

Mehr

Vorlesung Informatik II

Vorlesung 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 17. JAVA Kommunikation von Threads 1 Motivation

Mehr

Liste Programmieren Java Überblick

Liste Programmieren Java Überblick Liste Programmieren Java Überblick 1 Was ist Java? 2 Klassen und Objekte 3 Vererbung 4 Schnittstellen 5 Innere Klassen 6 Exceptions 7 Funktionsbibliothek 8 Datenstrukturen und Algorithmen 9 Ein-/Ausgabe

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG FORTGESCHRITTENE KONZEPTE Tobias Witt!! 26.03.2014 FEHLERBEHANDLUNG KLASSISCHER ANSATZ Fehlercode als Rückgabewert von Methoden! String Fehlercode als String! int Fehlercode

Mehr

Parallele und funktionale Programmierung Wintersemester 2013/ Übung Abgabe bis , 16:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2013/ Übung Abgabe bis , 16:00 Uhr . Übung Abgabe bis 08.11.013, 16:00 Uhr Aufgabe.1: Erreichbarkeitsgraph Gegeben sei folgendes paralleles Petri-Netz für eine einfache Fußgängerampelschaltung: a) Zeichnen Sie den vollständigen Erreichbarkeitsgraphen

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2015/16 Aufgabenblatt 6 23.11.2014

Mehr

Dezentrale Kontrolle: Aktive Objekte. Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread

Dezentrale Kontrolle: Aktive Objekte. Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread Dezentrale Kontrolle: Aktive Objekte Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread Passive Objekte Bieten Dienste auf Abruf an: - eine Zahl von der Konsole

Mehr

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2013/14 Aufgabenblatt 6 9. Dezember

Mehr

Kapitel 6. Verklemmungen (Deadlocks)

Kapitel 6. Verklemmungen (Deadlocks) Seite 1 Kapitel 6 Verklemmungen (Deadlocks) Prof. Dr. Rolf Hennicker 16.06.2016 6.1 Charakterisierung von Deadlocks Seite 2 Eine Verklemmung entsteht, wenn alle Prozesse in einem System blockiert (d.h.

Mehr

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2015/16 Aufgabenblatt 4 9.11.2015

Mehr

Programmiertechnik Klassenvariablen & Instantiierung

Programmiertechnik Klassenvariablen & Instantiierung Programmiertechnik Klassenvariablen & Instantiierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Klassenvariablen Zur Erinnerung: Klassen bestehen aus Variablen und Methoden; beide zusammen

Mehr

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei Lösungsvorschläge zur Klausur zum Kurs 1618 Sommersemester 2001 am 22.9.2001 Aufgabe 1 a) Benutzungsbeziehung: class Kennzeichen class Fahrzeug boolean gueltigeskennzeichen (Kennzeichen kz) Objekte der

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 11: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK ECHNISCHE UNIVERSIÄ MÜNCHEN FAKULÄ FÜR INFORMAIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2007/2008 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 9 F. Forster,. Gawlitza,

Mehr

Threading. Arthur Zaczek. Aug 2015

Threading. Arthur Zaczek. Aug 2015 Arthur Zaczek Aug 2015 1 Threading 1.1 Motivation Threading erlaubt die gleichzeitige Ausführung von mehreren Programmteilen. mehrere gleichzeitige Anfragen: Webserver, Datenbank (zu) lange laufende Berechnungen:

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode folgt im Anschluss. Beispielcode Es gibt eine Klasse Benutzerverwaltung, welche eine Liste mit Benutzern

Mehr

Klausur Software-Entwicklung September 00

Klausur 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

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Prozesszustände (1a)

Prozesszustände (1a) Prozesszustände (1a) NOT EXISTING DELETED CREATED Meta-Zustand (Theoretische Bedeutung) Prozesszustände Multiuser Umfeld (1c) Hintergrund-Prozess - der Prozess startet im Hintergrund - my-commandbin &

Mehr

Das Interface-Konzept am Beispiel der Sprache Java

Das Interface-Konzept am Beispiel der Sprache Java Das Interface-Konzept am Beispiel der Sprache Java Klaus Kusche, November 2013 Inhalt Motivation: Wozu braucht man Interfaces? Interfaces in Java Was spricht gegen die große Lösung? Voraussetzungen Kenntnisse

Mehr

Name: Matrikelnr : Aufgabe 1: (ca. 8 Punkte )

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

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

Beispiel für überladene Methode

Beispiel 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

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Verteilte Systeme CS5001

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

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 19. 25. Februar 2003 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.

Mehr

Objektorientierung III

Objektorientierung III Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt 10 9.1.2017 Objektorientierung III Aufgabe 10.1. Wir sind doch alle gleich In der Vorlesung

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2 Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Tutoraufgabe 1 (Zweierkomplement): a) Sei x eine ganze Zahl. Wie unterscheiden sich die Zweierkomplement-Darstellungen

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:

Mehr

Motivation. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 20: Threads. Inhalt. Ein Beispiel zur Motivation

Motivation. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 20: Threads. Inhalt. Ein Beispiel zur Motivation Universität Osnabrück 1 Motivation 3 - Objektorientierte Programmierung in Java Führt ein Applet eine lange Berechnung aus, so erfolgt keine Reaktion auf die Betätigung des Stop-Buttons am Browser bzw.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

Mehr

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 49 Einfach verkettete Listen O1 O2 O3 50 Einführung Einfach verkettete Listen sind die einfachsten

Mehr

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

Mehr

Anwendung (2. Versuch:-) Entkopplung der Locks

Anwendung (2. Versuch:-) Entkopplung der Locks Gut gemeint aber leider fehlerhaft... Jeder Producer benötigt zwei Locks gleichzeitig, um zu produzieren: 1. dasjenige für den Puffer; 2. dasjenige für einen Semaphor. Musser fürden Semaphor einwait()

Mehr

Parallele und funktionale Programmierung Sommersemester Übung Abgabe bis , 10:00 Uhr

Parallele und funktionale Programmierung Sommersemester Übung Abgabe bis , 10:00 Uhr 4. Übung Abgabe bis 16.05.2013, 10:00 Uhr Aufgabe 4.1: Thread-Sicherheit a) Wann sind Klassen korrekt? Wie kann man nicht korrekte Klassen erkennen? b) Wann sind Klassen thread-sicher? Wie kann man nicht

Mehr