Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.

Slides:



Advertisements
Ähnliche Präsentationen
M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Anwendungen des OODM auf die ADB / NDB
Klassen in Java.
Zusammenfassung des Kapitels 8
Threadnocchio Dietrich Boles Nachdenken in Aurich 2009
Programmierkurs Java WS 98/99 Vorlesung 15 Dietrich Boles 17/02/99Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
Verteilte Software - Java - Prozedurale Programmierung 1
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Objektrelationales Mapping mit JPA Advanced Mapping Jonas Bandi Simon Martinelli.
Threads Richard Göbel.
Java: Objektorientierte Programmierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
Dynamische Webseiten Java servlets.
3.1.4 Leser/Schreiber-Ausschluß (reader/writer exclusion)
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.
Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Einführung in Java1 Einführung in JAVA.
Abstrakte Klassen, Interface
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Informatikunterricht mit Java
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Write the answers to these questions down on a piece of paper from your notebook. Was bedeutet Alles kann besser werden auf Engisch? What are some social.
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Java Performance Tuning Performance Tuning is similar to playing a strategy game but happily you usually get paid for it.
Advanced Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Parallel Programming Proofs ( yay !)
Parallel Programming ( J ) CSP
Equals, Hashcode und CompareTo Micha Kessler
Thread Synchronisation in JAVA
Design Patterns Ein Muster (pattern) ist eine Idee, die sich in einem praktischen Kontext als nützlich erwiesen hat und dies auch in anderen sein wird.
Client-Server-Architektur
Learning By Doing Ereignissteuerung (Events) prozedural ereignisgesteuert Unterprogrammaufruf an fest codierter Stelle Wann immer der Event auftritt, führe.
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Learning By Doing Übungen GPanel Quadratfenster mit pixelunabhängigen Windowkoordinaten (doubles) Zweckmässige Standardwerte (defaults) 01 x 0 1 y // WbzEx5.java.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Launch ON Global.vi System ID object name classname Services to suscribe Observer Control Ref vi-path Service name Step 1 : Objects register to the Global.vi´s,
Java Threads Scheduling Lei Chen November 2000 Proseminar.
Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000.
Beispielanwendung von Java Threads
Javelin Internet-based parallel computing using Java.
Programmiervorkurs WS 2014/15 Methoden
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
Threads in Java Wiederholung der BS Grundlagen Alois Schütte AOSD1.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Prof. Dr. Alois Schütte Advanced System Programming 1 Das concurrent Paket 1 Überblick 2 Lock 3 Condition 4 Queue 5 Executors.
2 Nebenläufige Prozesse. 2.1 Programmstruktur und Prozesse private Prozess = Anweisungen + Daten gemeinsame Aber:Wie verhält sich das Konstrukt „Prozess“
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 1 Beispiel class SpreadSheet { int cellA1, cellA2, cellA3; synchronized.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Synchronisation mit Monitoren Threads können in Java parallel ablaufen, oft.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
 Präsentation transkript:

Parallel Programming Thread Synchronization

Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort in Java 4. Ausblick auf Assignment 3

1. – ASSIGNMENT 2 Live

2. – STARTEN VON THREADS IN JAVA

Threads erstellen Klasse java.lang.Thread Zwei Möglichkeiten : 1. Interface Runnable 2. Thread. run überschreiben

Interface Runnable public interface Runnable { void run(); } //in MyProcess.java public class MyProcess implements Runnable { void run() { //what I want this thread to do System.out.println(Hello from thread); } } //where you start the thread MyProcess mp = new MyProcess(); Thread t = new Thread(mp); t.start();

Thread.run überschreiben //in MyProcess.java public class MyProcess extends Thread { void run() { //what I want this thread to do System.out.println(Hello from thread); } } //where you start the thread MyProcess mp = new MyProcess(); mp.start();

Was ist besser? Thread.run + Einfacher aufzusetzen + Mehr Kontrolle über das Thread - Objekt - Weniger flexibel ( Vererbung ) Runnable Interface + Steht Vererbung nicht im Weg + Ist nicht an Threads gebunden - Benötigt einen Schritt mehr zum Aufsetzen

Threads auf Eis try { //doze a random time (0 to 0.5 secs) to simulate workload Thread.sleep( (int)(Math.random()*500) ); } catch (InterruptedException e) { … } Thread. sleep ( long ) versetzen den aktuellen Thread für mindestens x Millisekunden in den sleep - Zustand. Wozu InterruptedExcpetion ?

Ohne InterruptedException Zeit Thread AThread B Thread.sleep(500) Katastrophe

Mit InterruptedException Zeit Thread AThread B Thread.sleep(500) Katastrophe

3. – SYNCHRONIZED

Intrinsic synchronized public class Buffer { public synchronized void write(int i) { … } public synchronized int read() { … } } Für Methoden Thread muss zunächst exklusiven lock erlangen Jede Klasse und jedes Objekt hat einen intrinsic lock Schliessen sich gegenseitig aus ( mutual exclusion ), weil beide this als lock verwenden

synchronized Block public void someMethod1(){ //do something before synchronized(anObject) { … } //do something after } public void someMethod2() { //do something before synchronized(anObject) { … } //do something after } Schliessen sich gegenseitig aus, weil beide das selbe Objekt als lock verwenden

Fragen Können statische methoden ( staic ) auch synchronized werden ? –Was wäre das lock object ? Wieso Objekte als locks ? –und nicht z. B. Zahlen, oder Strings ?

Noch mehr Fragen public void addCustomer(DB db, Customer c) { synchronized(db) { addAddress(db, c.Address); db.newCustomer(c); } } public void addAddress(DB database, Address a) { db.verifyAddress(a); synchronized(database) { db.newAddress(db, a); } } Zweimal wird das DB - Objekt als lock verwendet. Funktioniert das ? Wieso ? Wieso nicht ?

4. – ASSIGNMENT 3

Das producer/consumer- Beispiel Der producer produziert ständig neue Werte und schreibt sie in einen gemeinsamen buffer Der consumer liest die Werte aus dem gemeinsamen buffer und verwendet sie Jeder Wert darf nur genau einmal konsumiert werden. Die Frage : Wie synchronisiert man die zwei ? ProducerConsumer Buffer write () read ()