Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:

Slides:



Advertisements
Ähnliche Präsentationen
Objektorientierte Programmierung
Advertisements

Vertieferseminar Geoinformation WS 02/03
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Einführung in die Programmierung Zusammenfassung
6.3 Ereignisbasierte Systeme Ereignis (event) : eine Ereignis-Quelle (event source, publisher) generiert Benachrichtigung (event notification), an der.
3 Prozessverwaltung  sieht einen Prozess als Objekt der Verwaltung,
Real - Time Java Seminar Asynchrone Ereignisse und Asynchroner Kontrolltransfer in Real - Time Java Sönke Eilers.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java News & Music Der Chat
Threads Richard Göbel.
Indirekte Adressierung
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
Java: Referenzen und Zeichenketten
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.
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.
Java-Kurs Grafik Julian Drerup.
PRJ 2007/1 Stefan Dissmann Motivation Problem: Benutztes Objekt kennt den Kontext seiner Nutzung nicht. Daher kann es in besonderen Situationen keine Entscheidung.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Klassen und Objekte
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.
Das Roboterprojekt Einführung Der erste Entwurf Das Thread-Konzept Hindernisse Website.
Java Threads Sebastian Werler
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Parallel Programming Condition Queues
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Thread Synchronisation in JAVA
Optimale Ursprungsgerade
CuP - Java Achzehnte (und LETZTE. ) Vorlesung : 1
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Letzte Chance!!! Exceptions Thread, Runnable Synchronized Wait, notify, notifyAll Thread States Semaphoren JCSP Swing JOMP Linearizability History Amdahl‘s.
Parallelisierung für Multiprozessor-Maschinen Teil 2.
Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000.
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
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
Muster nebenläufiger Programmierung concurrent Packet von Java Alois Schütte AOSD1.
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“
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Parallel Programming Semaphores / Reader - Writer - Lock
93 Das Monitorkonzept (nach Hoare/Brinch-Hansen 1974) Nur ein Prozess bzw. Thread kann zu einem bestimmten Zeitpunkt im Monitor aktiv sein => gegenseitiger.
1 VE 11 Kruskal-Realisierung Listen. 2 Auf dem Weg zur Kruskal-Realisierung Vorüberlegungen: Der Graph könnte dargestellt werden als Menge von Knoten,
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/ Aufzählungstypen.
Dr. Wolfram Amme, Das Thread-Konzept in objektorientierten Programmiersprachen, Informatik II, FSU Jena, SS Thread-Konzept in objektorientierten.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 1 Beispiel class SpreadSheet { int cellA1, cellA2, cellA3; synchronized.
Java Programme nur ein bisschen objektorientiert.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Exceptions in der Programmiersprache Java.
1 Wiederholung: Threads Threads können „parallel“ ablaufen In Java sorgt die JVM für die Zuteilung von Rechenzeit an die Threads. Beispiele für Anwendung:
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Synchronisation mit Monitoren Threads können in Java parallel ablaufen, oft.
Praktische Informatik 1
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Vererbung.
Die Klasse Vielfrass in Java
Implementieren von Klassen
 Präsentation transkript:

Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.: –Verdrängendes/kooperierendes Umschalten –Zeitverteilungsstrategie (Round Robin etc.)

Benutzung von Threads Spezialisierung der Klasse java.lang.Thread Implementierung des Interface java.lang.Runnable Thread.start(): Asynchrone nebenläufige Ausführung von run() Class MyThread1 extends Thread {... public void run() {...}...} Class MyThread2 implements Runnable {... public void run() {...}...}.... MyThread1 mt1 = new MyThread1(); mt1.start(); MyThread2 mt2 = new MyThread2(); Thread thr = new Thread(mt2); thr.start();... Class MyThread1 extends Thread {... public void run() {...}...} Class MyThread2 implements Runnable {... public void run() {...}...}.... MyThread1 mt1 = new MyThread1(); mt1.start(); MyThread2 mt2 = new MyThread2(); Thread thr = new Thread(mt2); thr.start();...

Synchronisation mit Monitoren Monitore überwachen kritische Bereiche (KB): –KB ist Teil des Programmcodes –Höchstens ein Thread im KB Ablauf: –Anmeldung des Threads (T) beim Monitor (M) –T blockiert –Wenn KB frei ist  Aktivierung von Tdurch M (T belegt M) –Wenn T KB verlässt  Signalisierung an den Monitor (T gibt M frei)

Monitore in Java Jedes Java-Objekt ist ein Monitor. Syntax: synchronized (obj) {... Kritischer Bereich... } Spezialsyntax für kritische Methodenaufrufe: synchronized Type method(...) {...} entspricht Type method(...) { synchronized(this) {...} }

Explizite Synchronisation 3 Methoden zur Freigabe von Monitoren: –wait() Blockierung des Threads –notify() Deblockierung eines Threads des Monitors –notifyAll() Deblockierung aller Threads des Monitors

Lebenszyklus eines Threads (vereinfacht) sleeping blocked end runnablerunning Scheduler start() interrupt() sleep() wait(), join() notify(), Interrupt() Terminierung von run()

System besteht aus drei Objekten: –Producer erzeugt regelmäßig Daten, –Consumer verarbeitet diese Daten. –Datenspeicherung in einem Depot Es soll keine Rechenzeit vergeudet werden: –Keine Erzeugung bei vollem Depot. –Keine Consumer-Aktivität ohne Daten Aber: Nebenläufige Erzeugung/Verarbeitung Beispiel: Producer/Consumer ProducerDepotConsumer

Depot class Depot { private int buffer=-1; private boolean empty = true; synchronized int getContent() throws InterruptedException { while( empty) { wait(); } // warte bis gefüllt int res = buffer; empty = true; // kopiere Ergebnis notify(); // signalisiere leeres Depot return res; } synchronized void putContent( int content) throws InterruptedException { while ( ! empty ) { wait(); } // warte bis Depot leer buffer = content; empty = false;// fülle Depot notify();// signalisiere volles Depot return; } }

Producer class Producer extends Thread { private Depot myDepot; Producer( Depot dep) { myDepot = dep; } public void run() { int i = 0; while( true ) { i++; try { myDepot.putContent(i); } catch( InterruptedException ex ) {} } Erzeugen der Daten Übergeben ans Depot

Consumer class Consumer extends Thread { private Depot myDepot; Consumer( Depot dep ) { myDepot = dep; } public void run() { while( true ) { try { int i = myDepot.getContent(); } catch (InterruptedException ex) {} System.out.println(i); } } } Holen der Daten Verarbeiten der Daten

Zusammenstöpseln package vs99.ex1; // hier die vorherigen Klassendefinitionen class ThreadDemo { public static void main(String args[]) { // Konfiguration des Systems Depot dep = new Depot(); Producer prod1 = new Producer(dep); Consumer con1 = new Consumer(dep); // Starten des Systems con1.start(); prod1.start(); } }