Verteilte Algorithmen TI5005

Größe: px
Ab Seite anzeigen:

Download "Verteilte Algorithmen TI5005"

Transkript

1 Verteilte Algorithmen TI5005 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Prozess-Netze mit Aktoren Produzent / Konsument / Pipeline Client-Server Abstraktion der Partner

2 Produzent / Konsument Schreiber / Produzent Leser / Konsument Schreiber Aktiv Leser Schreiber Aktiv Aktiv Klassisch : aktiver Produzent, aktiver Konsument Schreiber Rektiv Leser Reaktiv Pull: reaktiver Produzent, aktiver Konsument Reaktiv Push: aktiver Produzent, reaktiver Konsument Schreiber Aktiv Leser Leser Reaktiv Unsinn: reaktiver Produzent, reaktiver Konsument Seite 2

3 Produzent / Konsument Push: Aktiver Schreiber / Produzent Reaktiver Leser / Konsument ohne Flusskontrolle Schreiber sendet Daten ohne Rücksicht auf Leser Leser arbeitet seine Mailbox ab, diese wird eventuell von Nachrichten überflutet Leser Schreiber mit Flusskontrolle Schreiber und Leser beachten Protokoll z.b.: Stop-and-Wait-Protokoll: Leser bestätigt jede Nachricht Schreiber wartet nach jeder Nachricht eine Bestätigung ab. Reaktiv Aktiv aktiver Produzent, reaktiver Konsument Interaktion ohne Flusskontrolle Schreiber Aktiv Leser Reaktiv aktiver Produzent, reaktiver Konsument Interaktion mit Flusskontrolle Seite 3

4 Produzent / Konsument Push: Aktiver Schreiber / Produzent Reaktiver Leser / Konsument ohne Flusskontrolle akka.actor.actorref akka.actor.actor akka.actor.actorsystem akka.actor.props Schreiber class Reader extends Actor { def receive = { case x: Int => { consume(x) def consume(v: Int) { println(s"reader consumes $v") Aktiv class Writer(start: Int, reader : ActorRef) extends Runnable { override def run { var i = start while (true) { reader! i i = i+1 object A_Producer_R_Consumer_App_NoFlowControl extends App { val system = ActorSystem("RWSystem") val reader = system.actorof(props[reader], name = "reader") val writer = new Writer(50, reader) new Thread(writer). start Seite 4 Leser Reaktiv

5 Produzent / Konsument Push: Aktiver Schreiber / Produzent Reaktiver Leser / Konsument mit Flusskontrolle akka.actor.{actorref, Actor, ActorSystem, Props scala.concurrent.{executioncontext, Future, Await akka.pattern.ask akka.util.timeout scala.concurrent.duration._ Schreiber case object Ack class Reader extends Actor { def receive = { case x: Int => { consume(x) sender! Ack def consume(v: Int) { println(s"reader consumes $v") class Writer(start: Int, reader : ActorRef, implicit val execcontext: ExecutionContext) implicit val timeout = Timeout(3 seconds) override def run { var i = start while (true) { val f: Future[_] = (reader? i) Await.result(f, 1.seconds) i = i+1 Aktiv Leser Reaktiv extends Runnable { object A_Producer_R_Consumer_App_FlowControl extends App { val system = ActorSystem("RWSystem") val execcontext = system.dispatcher val reader = system.actorof(props[reader], name = "reader") val writer = new Writer(50, reader, execcontext) new Thread(writer). start Seite 5

6 Produzent / Konsument Pull: Reaktiver Schreiber / Produzent Aktiver Leser / Konsument ohne Flusskontrolle akka.actor.{actorref, Actor, ActorSystem, Props scala.concurrent.{executioncontext, Future, Await scala.concurrent.duration._ scala.util.{success, Failure akka.pattern.ask akka.util.timeout case object Ask class Reader(writer : ActorRef, implicit val execcontext: ExecutionContext) extends Runnable { implicit val timeout = Timeout(3 seconds)? Schreiber Reaktiv Leser Aktiv reaktiver Produzent, aktiver Konsument override def run() { while (true) { val f: Future[_] = (writer? Ask) consume(f.asinstanceof[future[int]]) Asynchrone Verarbeitung der Antwort def consume(f: Future[Int]) { des Schreibers: Keine Flusskontrolle! f andthen { case Success(v) => println(s"reader received $v") case Failure(e) => println(s"reader failed with $e") object R_Producer_A_Consumer_App_NoFlowControl extends App { val system = ActorSystem("RWSystem") val execcontext = system.dispatcher class Writer(start: Int) extends Actor { var i = start val writer = system.actorof(props(classof[writer],50), name = "writer") def receive = { val reader = new Reader(writer, execcontext) case Ask => { sender! i new Thread(reader). start i = i+1 Seite 6

7 Produzent / Konsument Pull: Reaktiver Schreiber / Produzent Aktiver Leser / Konsument mit Flusskontrolle akka.actor.{actorref, Actor, ActorSystem, Props scala.concurrent.{executioncontext, Future, Await scala.concurrent.duration._ akka.pattern.ask akka.util.timeout? case object Ask Schreiber class Reader(writer : ActorRef, implicit val execcontext: ExecutionContext) extends Runnable { Reaktiv implicit val timeout = Timeout(3 seconds) override def run() { while (true) { val f: Future[_] = (writer? Ask) consume(await.result(f.asinstanceof[future[int]], 1.seconds)) def consume(v: Int) { println(s"reader consumes $v") Leser Aktiv reaktiver Produzent, aktiver Konsument Synchrone Verarbeitung der Antwort des Schreibers: Flusskontrolle! class Writer(start: Int) var i = start def receive = { case Ask => { sender! i i = i+1 extends Actor { object R_Producer_A_Consumer_App_FlowControl extends App { val system = ActorSystem("RWSystem") val execcontext = system.dispatcher val writer = system.actorof(props(classof[writer],50), name = "writer") val reader = new Reader(writer, execcontext) new Thread(reader). start Seite 7

8 Pipeline Pipeline (1) Der Partner wird als Parameter direkt bei der der Konstruktion übergeben. object SimpleActorNet_App extends App { val val val val system = consumer filter = producer ActorSystem("ProducerConsumer") = system.actorof(props[consumer], name = "Consumer") system.actorof(props(classof[filter], consumer), name = "Filter") = new Thread(new Producer(filter)) producer.start() producer.join() val filter_stopped: Future[Boolean] = gracefulstop(filter, 5 seconds) val consumer_stopped: Future[Boolean] = gracefulstop(consumer, 5 seconds) Await.result(filter_stopped, 5 seconds) Await.result(consumer_stopped, 5 seconds) Filter-Pipeline mit freundlichem Herunterfahren system.shutdown() producer filter consumer Seite 8

9 Pipeline Pipeline (2) akka.actor.{actor, ActorSystem, ActorRef, Props scala.util.random scala.concurrent.{await, Future akka.util.timeout scala.concurrent.duration._ akka.pattern.gracefulstop class Consumer extends Actor { def receive = { case x: Int => println("consumer received " + x) case _ => println("consumer received unkown msg ") class Filter(dest: ActorRef) extends Actor { def receive = { case -1 => { case x: Int => { if (x%2 == 0) dest! x case _ => println("filter received unkown msg ") class Producer(dest: ActorRef) extends Runnable { override def run() { for (i <- List(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21)) { Thread.sleep(Random.nextInt(100)) dest! i Seite 9

10 Client Server Aktor-Netze mit Monitoren Passive Monitore mit synchronisierten blockierenden Methoden in Kombination mit reaktiven Komponenten sind verboten. Kein Passiver Puffer (synchronisierender Kanal): der Schreiber darf kein blockierendes Put ausführen Reaktiv der Leser kann kein wartendes Get ausführen put Ein aktiver oder reaktiver Monitor, z.b. ein Puffer, kann zwei aktive Partner koppeln Seite 10 OK! Reaktiv get Puffer (Monitor / Server) aktiv oder reaktiv put uns inn OK ig! producer reaktiv Passiv mit Synchronisation value OK producer Reaktive Clients eines aktiven Monitors (Server) sind unsinnig! Ein (re)aktiver Server benötigt aktive Partner! Ver b put otenget! get value Puffer (Monitor / Server) aktiv oder reaktiv consumer uns i nni g! consumer reaktiv

11 Client Server Aktor-Netze mit Monitoren Beispiel reaktiver Puffer (1) case case case case akka.actor.{actor, ActorSystem, ActorRef, Props scala.util.random scala.concurrent.{await, Future akka.util.timeout scala.concurrent.duration._ akka.pattern.{ask, gracefulstop, AskTimeoutException class PutMsg(x: Int) class DataMsg(x: Int) object GetMsg object OKMsg producer aktiv put get OK value Puffer (Monitor / Server) reaktiv object ReactiveBuffer_App extends App { val system = ActorSystem("ProducerConsumer") val buffer = system.actorof(props[reactivebuffer], name = "Buffer") object producer1 extends ActiveProducer(buffer) { val data = List(1,3,5,7,9,11,13,15,17,19,21) object producer2 extends ActiveProducer(buffer) { val data = List(2,4,6,8,10,12,14,16,18,20,22) val p1: Thread = new Thread(producer1) val p2: Thread = new Thread(producer2) val consumer: Thread = new Thread(new ActiveConsumer(buffer)); consumer.start() p1.start(); p2.start() p1.join(); p2.join() consumer.interrupt() val buffer_stopped: Future[Boolean] = gracefulstop(buffer, 5 seconds) Await.result(buffer_stopped, 5 seconds) system.shutdown() Seite 11 consumer aktiv

12 Client Server Aktor-Netze mit Monitoren Beispiel reaktiver Puffer (2) abstract class ActiveProducer(buffer: ActorRef) extends Runnable { val data : List[Int] implicit val timeout = Timeout(5 seconds) override def run() { for (i <- data) { Thread.sleep(Random.nextInt(100)) val futureok = buffer? PutMsg(i) Await.result(futureOK, timeout.duration) Seite 12 producer aktiv

13 Client Server Aktor-Netze mit Monitoren Beispiel reaktiver Puffer (3) class ActiveConsumer(buffer: ActorRef) extends Runnable { implicit val timeout = Timeout(5 seconds) override def run() { while(! Thread.currentThread().isInterrupted()) { val futuredatamsg = buffer? GetMsg try { val v = Await.result(futureDataMsg, timeout.duration) println("consumer received " + v) catch { case e: InterruptedException => println("consumer interrupted") case e: AskTimeoutException => println("consumer timeout") Seite 13 consumer aktiv

14 Client Server Aktor-Netze mit Monitoren Beispiel reaktiver Puffer (4) class ReactiveBuffer extends Actor { implicit val execcontext = context.dispatcher object BufferMonitor { var item : Int = -999 var empty : Boolean = true def put(x: Int) = synchronized { while (!empty) { try { wait catch { case e: InterruptedException => empty = false item = x notifyall() def get() : Int = synchronized { while (empty) { try { wait catch { case e: InterruptedException => empty=true notifyall() item Puffer (Monitor / Server) reaktiv def receive = { case PutMsg(x) => val lsender = sender Future { BufferMonitor.put(x) lsender! OKMsg case GetMsg => val lsender = sender Future { lsender! DataMsg(BufferMonitor.get()) case x => println("buffer received unkown msg " + x) Seite 14

15 Client Server Aktor-Netze mit Monitoren Client Zusammenfassung Client / Server Kombinationen OK Ein Monitor synchronisiert die Kontrollflüsse aktiver Komponenten die in einer dritten Komponente zusammenstoßen In einer passiven Komponente durch Synchronisation (Anhalten / reaktivieren des Kontrollflusses) Verboten In einer reaktiven Komponente durch Verwaltung der eintreffenden Nachrichten und Senden eigener Nachrichten. OK In einer aktiven Komponente durch Verwaltung der eintreffenden Nachrichten und Senden eigener Nachrichten. Ein eigener Kontrollfluss prinzipiell unnötig wenn auch gelegentlich vorteilhaft. OK Unsinnig Seite 15 Server Client

16 Abstraktion der Partner Aktor-Netze und Ports DataSink DataSource Channel Aktive Komponenten haben explizite Empfangsoperation können über Kanäle kommunizieren Senden und Empfang via Ports ist sinnvoll Empfänger Sender InPort OutPort Kanäle / Ports / aktive Komponenten: eine perfekte Kombination Reaktive Komponenten Reaktive Komponenten dürfen keine blockierenden Operationen ausführen Direkte Interaktion schreibend oder lesend mit einem passiven blockierenden Puffer ist verboten Reaktive Komponenten können nur von einem aktiven Kanalende mit Nachrichten versorgt werden DataSink DataSource Channel Sender InPort OutPort DataSink Das Mischen aktiver und reaktiver Komponenten ist problematisch. Aktive Komponenten sollten auf ein Minimum beschränkt werden. Explizite Kanäle in Kombination mit reaktiven Komponenten sind wenig sinnvoll. reaktiver Empfänger DataSource Channel Sender OutPort reaktiver Empfänger InPort Reaktive Komponente an einem Kanalende: aktives Kanalende erforderlich Seite 16

17 Abstraktion der Partner Aktor-Netze und Ports Explizite Kanäle als synchronisierende Komponenten sind in Aktor-Netzen kaum sinnvoll, da das zugrunde liegende System die entsprechende Funktionalität bietet und reaktive Komponenten keine synchronisierenden Puffer zwischen sich benötigen. Die Kombination Port / Kanal zur Trennung der Bekanntschaft-Relation vom statischen Code der Prozesse / Aktoren ist jedoch hilfreich. Eine reaktive Komponente benötigt Informationen über die möglichen Empfänger ihrer Nachrichten um eigene Nachrichten an den Richtigen versenden zu können. Das Konzept Senden an einen OutPort ist darum sinnvoll. Eine reaktive Komponente kann nicht an einem bestimmten Port / Kanal auf Nachrichten warten. Das Konzept Empfangen an einem bestimmten InPort ist unnötig. Eine Komponente muss allerdings feststellen können, von wem eine Nachricht kam. Das Konzept Nachricht kam über einen bestimmten InPort ist also zu realisieren. Seite 17

18 Abstraktion der Partner Aktor-Netze und (abstrakte) Nachbarschaften Das Port-Konzept als Trennung der Netztopologie vom Code der Komponenten kann auf unterschiedliche Art auch in Aktor-Netzen realisiert werden. Eine Möglichkeit besteht darin, die Komponenten (Knoten) im Kontext einer Nachbarschaft agieren zu lassen. Die Nachbarschaft besteht aus Knoten zu denen Nachrichten gesendet werden können und die als Absender einer Nachricht in Frage kommen. Die Nachbarschaft eines Knotens wird abstrakt definiert und bei der Bestimmung der Netztopologie konkretisiert. Seite 18

19 Abstraktion der Partner Aktor-Netze und (abstrakte) Nachbarschaften A Beispiel Prozesse und Aktoren mit abstrakten Partnern (1) class Consumer extends Actor { def receive = { case value => println("consumer received " + value + " from " + sender ) Sender einer Nachricht kann stets festgestellt werden mit der Methode sender. abstract class Filter extends Actor { val out: ActorRef def receive = { case x: Int => { if (x%2 == 0) out! x case _ => println("filter received unkown msg ") abstract class Producer extends Runnable { val out: ActorRef val data: List[Int] override def run() { for (i <- data) { Thread.sleep(Random.nextInt(100)) out! i Seite 19

20 Abstraktion der Partner Aktor-Netze und (abstrakte) Nachbarschaften A Beispiel Prozesse und Aktoren mit abstrakten Partnern (2) object SimpleNetNeighbor_App extends App { val system = ActorSystem("ProducerConsumer") val consumer = system.actorof(props[consumer], name = "Consumer") class FilterC extends Filter { val out: ActorRef = consumer val filter = system.actorof(props[filterc], name = "Filter") object Producer_1 extends Producer { val data = List(1,2,3,4,5,6,7,8,9,0) val out = filter object Producer_2 extends Producer { val data = List(11,12,13,14,15,16,17,18,19,10) val out = filter val producer1 = new Thread(Producer_1) val producer2 = new Thread(Producer_2) producer1.start(); producer2.start() producer1.join(); producer2.join() val filter_stopped: Future[Boolean] = gracefulstop(filter, 5 seconds) val consumer_stopped: Future[Boolean] = gracefulstop(consumer, 5 seconds) Await.result(filter_stopped, 5 seconds) Await.result(consumer_stopped, 5 seconds) system.shutdown() Seite 20

21 Abstraktion der Partner Aktor-Netze und (abstrakte) Nachbarschaften B Beispiel Prozesse und Aktoren mit abstrakter Nachbarschaft (1) akka.actor.{actor, ActorSystem, ActorRef, Props scala.util.random scala.concurrent.{await, Future akka.util.timeout scala.concurrent.duration._ akka.pattern.gracefulstop class Consumer extends Actor { var neighbors : Set[ActorRef] = Set() def receive = { case value => { println("consumer received a " + value + " from " + sender ) if (neighbors.contains(sender)) { println(" (I know this sender)") else { println(" (This sender is new to me)") neighbors += sender abstract class Producer extends Runnable { val neighbors: List[ActorRef] val data: List[Int] override def run() { for (i <- data) { Thread.sleep(Random.nextInt(100)) for (out <- neighbors) out! i Seite 21

22 Abstraktion der Partner Aktor-Netze und (abstrakte) Nachbarschaften B Beispiel Prozesse und Aktoren mit abstrakter Nachbarschaft (2) object SeveralNeighbor_App extends App { val system = ActorSystem("ProducerConsumer") val consumer_1 = system.actorof(props[consumer], name = "Consumer_1") val consumer_2 = system.actorof(props[consumer], name = "Consumer_2") object ProducerC extends Producer { val data = List(1,2,3,4,5,6,7,8,9,0) val neighbors = List(consumer_1, consumer_2) val producer = new Thread(ProducerC) producer.start(); producer.join() val consumer_1_stopped: Future[Boolean] = gracefulstop(consumer_1, 5 seconds) val consumer_2_stopped: Future[Boolean] = gracefulstop(consumer_2, 5 seconds) Await.result(consumer_1_stopped, 5 seconds) Await.result(consumer_2_stopped, 5 seconds) system.shutdown() Seite 22

Nebenläufige und verteilte Programme CS2301

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

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

Verteilte Algorithmen TI5005

Verteilte Algorithmen TI5005 Verteilte Algorithmen TI5005 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Aktoren Aktor-Modell Aktor-Implementierung: Akka-Aktoren Aktoren Aktoren: Modell und Progammkonstrukt Computer

Mehr

Verteilte Algorithmen TI5005

Verteilte Algorithmen TI5005 Verteilte Algorithmen TI5005 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Algorithmen in Prozessnetzen Pipes und Filter Notation: syntaktische Schleife Pipes und Filter Datenfluss

Mehr

Verteilte Systeme CS5001

Verteilte Systeme CS5001 Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Aktoren - Aktor-Modelle und -Systeme - Aktoren in Scala / Akka (Kurzeinführung) Aktoren Computer science is

Mehr

Verteilte Algorithmen TI5005

Verteilte Algorithmen TI5005 Verteilte Algorithmen TI5005 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Wellen- und Traversierungsalgorithmen Wellen-Algorithmen Wellen-Algorithmen Wellen-Algorithmen: Eine Klasse

Mehr

Nebenläufige und verteilte Programme CS2301

Nebenläufige und verteilte Programme CS2301 Nebenläufige und verteilte Programme CS2301 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Monitorprogramme: Passive Monitore und aktive Threads Monitor-Anwendungen: Spezifikation

Mehr

Software-Architektur Actors

Software-Architektur Actors Actors Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München SS 2015 Actor Model 1973 von Carl Hewitt, Peter Bishop und Richard Steiger vorgeschlagenes Modell für nebenläufige

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

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

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

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

Betriebssysteme Teil 11: Interprozess-Kommunikation

Betriebssysteme Teil 11: Interprozess-Kommunikation Betriebssysteme Teil 11: Interprozess-Kommunikation 19.12.15 1 Übersicht Grundbegriffe Shared Memory Pipelines Messages Ports Sockets 2 Grundbegriffe Interprocess-Kommunikation = Austausch von Daten über

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

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

Ausdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI

Ausdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI Ausdrücke in Scala Funktionale Programmierung Christoph Knabe FB VI 17.10.2014 Inhalt Einfache Ausdrücke Infix-Notation für Methodenaufruf Sonderzeichen in Bezeichnern Schlüsselwörter Konstanten Variablen

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

CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik)

CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik) Prof. Dr. Th. Letschert CS2101 Nebenläufige und Verteilte Programme Bachelor of Science (Informatik) Vorlesung 7 Th Letschert FH Gießen-Friedberg Ressourcen Verwaltung passive Ressourcen aktive Ressourcen

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

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

Softwaretechnik 1 Übung 5

Softwaretechnik 1 Übung 5 Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Softwaretechnik 1 Übung 5 2.7.29 Aufgabe 1a) Zeichnen Sie die komplette Vererbungshierarchie der Klasse BufferedOutputStream als UML- Klassendiagramm.

Mehr

Verteilte Systeme CS5001

Verteilte Systeme CS5001 Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Verteilte Programme und Anwendungen I - Verteilte Programme Verteilte Algorithmen und verteilte Programme Programm

Mehr

Synchronisation in Java. Invisible Web

Synchronisation 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

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

(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

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

JJ Prozesse und Nebenläufigkeit

JJ Prozesse und Nebenläufigkeit 1 Wiederholung: Algorithmus von Peterson boolean ready0=false, ready1=false; int turn=0; JJ Prozesse und Nebenläufigkeit (Auszug aus der Vorlesung) while( 1 ) Prozess 0 ready0 = true; turn = 1; while(

Mehr

Synchrone Botschaften

Synchrone Botschaften Synchrone Botschaften PPJ-84 Prozesse kommunizieren und synchronisieren sich direkt miteinander, bzw. über Kanäle, die höchstens eine Botschaft aufnehmen. Operationen: send (b): receive (v): blockiert

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

Das Monitorkonzept Brinch-Hansen

Das 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

Mehr

Kapitel 5. Monitore und Synchronisationsbedingungen

Kapitel 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

Mehr

Interface. So werden Interfaces gemacht

Interface. So werden Interfaces gemacht Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.

Mehr

Reactive Programming. Funktionale Programmierung. Christoph Knabe FB VI 10.12.2014

Reactive Programming. Funktionale Programmierung. Christoph Knabe FB VI 10.12.2014 Reactive Programming Funktionale Programmierung Christoph Knabe FB VI 10.12.2014 Inhalt Reactive Programming Was ist Reactive Programming Geschichte der asynchronen Programmierung Wo bleibt die Zeit? Wartefreies

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

Verteilte Algorithmen TI5005

Verteilte Algorithmen TI5005 Verteilte Algorithmen TI5005 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Modelle und Notationen Systeme, Anwendungen, Algorithmen Verteiltes System Ein verteiltes System besteht

Mehr

Scala. Abstrakte Elemente. Jevgeni Zelenkov. HM

Scala. Abstrakte Elemente. Jevgeni Zelenkov. HM Scala. Abstrakte Elemente Jevgeni Zelenkov. HM. 2010. Was sind abstrakte Elemente Abstrakte Elemente sind Elemente in Traits oder Klassen, die keine konkrete Implementierung haben. Abstrakte Klassen und

Mehr

Client-Server TCP/IP - Kodierung

Client-Server TCP/IP - Kodierung Client-Server TCP/IP - Kodierung Die klassen Ein (engl. Sockel) ist eine bidirektionale Netzwerk-Kommunikationsschnittstelle, deren Verwaltung das Betriebssystem übernimmt. Die Kombination aus IP-Adresse

Mehr

Synchronisation und Kommunikation über Nachrichten

Synchronisation und Kommunikation über Nachrichten Synchronisation und Kommunikation über Nachrichten meist bei verteiltem Speicher, kein gemeinsamer Speicher -> keine globalen Variablen keine zu schützenden Datenbereiche Kommunikation über Kanäle und

Mehr

Network Communication. Dr. Jürgen Eckerle WS 06/07

Network Communication. Dr. Jürgen Eckerle WS 06/07 Network Communication Dr. Jürgen Eckerle WS 06/07 1 Thread-Programmierung ist wichtig um Nebenläufigkeit bei der Netzwerkprogrammierung zu realisieren Typisches Muster beim Server: Server-Handler. Der

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

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

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Praktikum: Grundlagen der Programmierung Prof. B. Rost, L. Richter WS 2013-14 Aufgabenblatt 9 20. Januar Threads 9.1

Mehr

Verteilte Systeme - Java Networking (Sockets) 2 -

Verteilte Systeme - Java Networking (Sockets) 2 - Verteilte Systeme - Java Networking (Sockets) 2 - Prof. Dr. Michael Cebulla 06. November 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 30 Michael Cebulla Verteilte Systeme Gliederung Wiederholung:

Mehr

Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation

Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation 09.05.15 1 Literatur [6-1] http://php.net/manual/de/book.sockets.php [6-2] http://de.wikipedia.org/wiki/socket_(software) [6-3] http://php.net/manual/de/book.network.php

Mehr

Nebenläufigkeit und Kommunikation in Go

Nebenläufigkeit und Kommunikation in Go Anwendung: Vorlesung Modellierung nebenläufiger Systeme Sommersemester 2016 Universität Duisburg-Essen Harsh Beohar & Barbara König Go ist eine Programmiersprache, die von Google entwickelt wird (http://golang.org/)

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

Nebenläufige und verteilte Programme CS2301

Nebenläufige und verteilte Programme CS2301 Nebenläufige und verteilte Programme CS2301 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Synchronisation: Basis-Mechanismen und -Ausdrucksmittel Threadsicherheit, kritische Abschnitte,

Mehr

Vorlesung Betriebssysteme II

Vorlesung Betriebssysteme II 1 / 15 Vorlesung Betriebssysteme II Thema 3: IPC Robert Baumgartl 20. April 2015 2 / 15 Message Passing (Nachrichtenaustausch) Prinzip 2 grundlegende Operationen: send(), receive() notwendig, wenn kein

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

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

Funk%onale*Programmierung* op%mal*nutzen* Michael*Sperber*

Funk%onale*Programmierung* op%mal*nutzen* Michael*Sperber* Funk%onale*Programmierung* op%mal*nutzen* Michael*Sperber* * Individualso

Mehr

Nebenläufige und verteilte Programme CS2301

Nebenläufige und verteilte Programme CS2301 Nebenläufige und verteilte Programme CS2301 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Threads Leichtgewichtige Prozesse Lebenszyklus Unterbrechungen Thread-Management Threads

Mehr

Allgemeine Hinweise:

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

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

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

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

Zur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus

Zur 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

Mehr

Websockets. Verbindungskanal zwischen Client-Anwendung (JavaScript in Browser) und Server.

Websockets. Verbindungskanal zwischen Client-Anwendung (JavaScript in Browser) und Server. Websockets Websocket: Verbindungskanal zwischen Client-Anwendung (JavaScript in Browser) und Server. Vergleichbar mit TCP/IP-Socket, aber durch Client-Skript direkt nutzbar Mit eingebauter Nachrichten-Fragmentierung.

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

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl Übung zur Vorlesung Grundlagen Betriebssysteme und Systemsoftware (Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl (gbs-ws11@mailschlichter.informatik.tu-muenchen.de) http://www11.in.tum.de/veranstaltungen/grundlagenbetriebssystemeundsystemsoftwarews1112

Mehr

Einführung Verteilte Systeme - Java Threads III -

Einführung Verteilte Systeme - Java Threads III - Einführung Verteilte Systeme - Java Threads III - Prof. Dr. Michael Cebulla 04. Dezember 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 45 M. Cebulla Verteilte Systeme Gliederung Wiederholung

Mehr

Beispiel Klausuraufgaben

Beispiel 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

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äufige und verteilte Programme CS2301

Nebenläufige und verteilte Programme CS2301 Nebenläufige und verteilte Programme CS2301 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Reaktive Programmierung Datenfluss-Paradigma der reaktiven Programmierung reaktive Programmierung

Mehr

Allgemeine Hinweise:

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

Mehr

Threads Kritische Bereiche Reales Beispiel Deadlocks Wait/Notify. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

Threads Kritische Bereiche Reales Beispiel Deadlocks Wait/Notify. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011 Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 Threads 2 Kritische Bereiche 3 Reales Beispiel 4 Deadlocks 5 Wait/Notify Nebenläufigkeit Moderne Betriebssysteme unterstützen

Mehr

12. Threads in Java. Sequentielle Abarbeitung (2) Beispiel: Thread (1) Sequentielle Abarbeitung (1)

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

Mehr

Muster nebenläufiger Programmierung. concurrent Packet von Java. Alois Schü;e AOSD 1

Muster nebenläufiger Programmierung. concurrent Packet von Java. Alois Schü;e AOSD 1 Muster nebenläufiger Programmierung concurrent Packet von Java Alois Schü;e AOSD 1 Concurrent Packet In diesem Teil der Veranstaltung werde Muster nebenläufiger Programmierung diskueert. Dazu wird das

Mehr

Mails in Python senden

Mails in Python senden Mails in Python senden Felix Döring, Felix Wittwer 14. November 2016 Python-Kurs Gliederung 1. Grundlagen: Mails senden Das Modul smtplib 2. Komplexere Mails senden Das Modul email 1 Die folgenden Folien

Mehr

Domänenorientierte Softwarearchitektur mit CÉU und RUST am Beispiel eines Heizungsgateways zur Fernüberwachung und Fernparametrisierung

Domänenorientierte Softwarearchitektur mit CÉU und RUST am Beispiel eines Heizungsgateways zur Fernüberwachung und Fernparametrisierung Domänenorientierte Softwarearchitektur mit CÉU und RUST am Beispiel eines Heizungsgateways zur Fernüberwachung und Fernparametrisierung Matthias Terber 18. November 2016 1 Agenda 1. Motivation Gateway

Mehr

Datenparallelität. Bildverarbeitung Differentialgleichungen lösen Finite Element Methode in Entwurfssystemen

Datenparallelität. Bildverarbeitung Differentialgleichungen lösen Finite Element Methode in Entwurfssystemen Datenparallelität PPJ-38 Viele Prozesse bzw. Prozessoren führen zugleich die gleichen Operationen auf verschiedenen Daten aus; meist Datenelemente in regulären Datenstrukturen: Array, Folge Matrix, Liste.

Mehr

Verteilte Systeme. 2. Die Client-Server-Beziehung und daraus resultierende Techniken. 2.2 Nebenläufigkeitstechniken in Java

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

Mehr

Instant Messaging. Status Nachrichten Multicast Daten Chat? IETF IMPP IMUnified. JUGS BlueMessenger, Kontakt admin@gamelab.ch

Instant Messaging. Status Nachrichten Multicast Daten Chat? IETF IMPP IMUnified. JUGS BlueMessenger, Kontakt admin@gamelab.ch Instant Messaging Status Nachrichten Multicast Daten Chat? IETF IMPP IMUnified BlueMessenger Server Designentscheidungen TCP-Verbindungen Kein Status an Kanälen Kein Verzeichnisdienst im Signalserver Limitierte

Mehr

16. Dynamische Datenstrukturen

16. Dynamische Datenstrukturen Datenstrukturen 6. Dynamische Datenstrukturen Eine Datenstruktur organisiert Daten so in einem Computer, dass man sie effizient nutzen kann. Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange

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

Java I Vorlesung Nebenläufigkeit

Java I Vorlesung Nebenläufigkeit Java I Vorlesung 10 Nebenläufigkeit 28.6.2004 Threads Synchronisation Deadlocks Thread-Kommunikation Innere Klassen Anonyme Klassen Nebenläufigkeit http://java.sun.com/docs/books/tutorial/essential/threads/

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

Scala Einstieg- und Aufwärmungübungen. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Nebenläufige und verteilte Programme

Scala Einstieg- und Aufwärmungübungen. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Nebenläufige und verteilte Programme 1 Prof. Dr. Th. Letschert Nebenläufige und verteilte Programme Scala Einstieg- und Aufwärmungübungen Dieses Aufgabenblatt dient dem Einstieg in Scala, bzw. dem Aufwärmen der Kenntnisse. Es enthält einige

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

2.2 Prozesse in Java

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

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG FORTGESCHRITTENE KONZEPTE Tobias Witt 26.03.2014 tobias.witt@hhu.de 25.12.01.30 Bürozeiten: 09 Uhr - 12 Uhr FEHLERBEHANDLUNG KLASSISCHER ANSATZ Fehlercode als Rückgabewert

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

Synchronisationsmodul - Prozesse

Synchronisationsmodul - Prozesse Synchronisationsmodul - Prozesse alois.schuette@h-da.de Alois Schütte 26. September 2016 1 / 124 Inhaltsverzeichnis Ein Prozess kann als die Abstraktion eines Programms, das von einem Prozessor ausgeführt

Mehr

Deadlocks Wait/Notify Reflections JavaBeans. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 33

Deadlocks Wait/Notify Reflections JavaBeans. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 33 Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 33 Deadlocks Wait/Notify Reflections JavaBeans 2 / 33 Verklemmungen Solange es nur einen Lock bzw. nur ein Objekt gibt, über

Mehr

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Drag and Drop (DnD) 1. Transfer-Mechanismus 2. Transfer-Support 3. Cursor-Symbole 4. Einführendes Beispiel 5. Komponenten DnD-fähig machen 6. Standard DnD-Verhalten ändern Folie 1 Lernziele Sie

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

1 - FortProg ist: [ ] objekt-orientiert; [ ] funktional; [ ] logisch; [ ] manchmal nicht auszuhalten

1 - FortProg ist: [ ] objekt-orientiert; [ ] funktional; [ ] logisch; [ ] manchmal nicht auszuhalten 1 - FortProg ist: [ ] objekt-orientiert; [ ] funktional; [ ] logisch; [ ] manchmal nicht auszuhalten Java-1. a), e) Java-2. --- gestrichen --- Java-3. keine Antwort ist richtig Java-4. a) Java-5. a), b)

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

Abgabe: (vor 12 Uhr) Aufgabe 12.1 (P) Siedlerspiel

Abgabe: (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,

Mehr

Verteilte Systeme - Java Networking (Sockets) -

Verteilte Systeme - Java Networking (Sockets) - Verteilte Systeme - Java Networking (Sockets) - Prof. Dr. Michael Cebulla 30. Oktober 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 36 M. Cebulla Verteilte Systeme Gliederung Grundlagen TCP/IP

Mehr

Reactive Programming. Funktionale Programmierung. Christoph Knabe FB VI

Reactive Programming. Funktionale Programmierung. Christoph Knabe FB VI Reactive Programming Funktionale Programmierung Christoph Knabe FB VI 21.06.2016 Inhalt Reactive Programming Was ist Reactive Programming Geschichte der asynchronen Programmierung Wo bleibt die Zeit? Wartefreies

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

Referenz. Bluetooth with NXT. Referenz zur Kommunikation mit Bluetooth zwischen mehreren NXT Prozessoren basierend auf NXC. Zelglistrasse 42 8122 Binz

Referenz. Bluetooth with NXT. Referenz zur Kommunikation mit Bluetooth zwischen mehreren NXT Prozessoren basierend auf NXC. Zelglistrasse 42 8122 Binz Referenz Bluetooth with NXT Referenz zur Kommunikation mit Bluetooth zwischen mehreren NXT Prozessoren basierend auf NXC Veröffentlicht von: Martin Stypinski Zelglistrasse 42 8122

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

Philipp Güttler Progwerkstatt Letzte Änderung: Enums, Interfaces, Generics und Threads

Philipp Güttler Progwerkstatt Letzte Änderung: Enums, Interfaces, Generics und Threads Philipp Güttler 18.11.2008 Progwerkstatt Letzte Änderung: 09.12.2009 Enums, Interfaces, Generics und Threads Seite 2 Enums Enums, Interfaces und Generics 17.11.2008 Enum Typen komplexer Datentyp, der festen

Mehr

Überblick. Verteilte Systeme - Übung. Was ist ein Thread? Threads in Java. Multithreading in Java Threads Synchronisation Koordinierung

Überblick. Verteilte Systeme - Übung. Was ist ein Thread? Threads in Java. Multithreading in Java Threads Synchronisation Koordinierung Überblick Verteilte Systeme - Übung Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) www4.informatik.uni-erlangen.de Sommersemester 2009

Mehr

13. Dynamische Datenstrukturen

13. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen

Mehr