Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.

Slides:



Advertisements
Ähnliche Präsentationen
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Advertisements

Ein Beispiel in Java.
Rekursive Grafiken Reklursive Grafiken.
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Verteilte Software - Java - Prozedurale Programmierung 1
Java News & Music Der Chat
Threads Richard Göbel.
Java: Grundlagen der Objektorientierung
Klassenvariable (auch Klassendaten bzw. statische Attribute genannt) und statische Methoden.
Ein Beispiel in Java.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
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.
Java-Kurs Grafik Julian Drerup.
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
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.
Klassen 02 - Klassen.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Das Roboterprojekt Einführung Der erste Entwurf Das Thread-Konzept Hindernisse Website.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Step by step zum JFrame 1 Zum JFrame Step by step by step by step by step by step by step by step by.
© 2005 Pohlig GK Informatik K Zum JFrame Step by step by step by step by step by step by step by step by.
© 2006 MPohlig Grundkurs Informatik mit Java 1 JFrame-Vorlage Step by step by step by step by step by step by step by step by.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Grundkonzepte Java - Klassendefinition
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Objektorientiertes Konstruieren
Variablenkonzept Klassisch, in Java Basistyp
Optimale Ursprungsgerade
Klassenhierarchien, Vererbung
CuP - Java Achzehnte (und LETZTE. ) Vorlesung : 1
Learning By Doing Ereignissteuerung (Events) prozedural ereignisgesteuert Unterprogrammaufruf an fest codierter Stelle Wann immer der Event auftritt, führe.
Starten der Entwicklungsumgebung (IDE)
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000.
Javelin Internet-based parallel computing using Java.
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Instanzmethoden
Threads in Java Wiederholung der BS Grundlagen Alois Schütte AOSD1.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
2. Kommunikation und Synchronisation von Prozessen 2
Muster nebenläufiger Programmierung concurrent Packet von Java Alois Schütte AOSD1.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
© 2005 Pohlig Informatik Jg. 11 mfH Michael Pohlig 1 Zum JFrame Step by step by step by step by step by step by step by step by.
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
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
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/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.
Mit der Turtle Java Programmieren
Mit Java die Turtle steuern
Reklursive Grafiken Teil I
 Präsentation transkript:

Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung kann auf einem Einprozessorsystem simuliert werden und trotzdem grosse Vorteile aufweisen. Die Prozesse laufen dann quasi-parallel Ein Prozess-Scheduler sorgt für die "Umschaltung" (Context switch) der Prozesse Prozess 1 Scheduler Gemeinsame Ressourcen Prozess 2 Hauptschwierigkeit: Konfliktfreie Verwaltung gemeinsamer Ressourcen

Learning By Doing Deadlock Threads, Deadlock s. Buch S. 467ff Statt Prozesse können auch Programmteile eines einzelnen Programms quasi-parallel laufen. Diese werden Threads (Fäden) genannt Multithread-Programme sind aber bezüglich Programmierlogik (und für den Entwickler der Programmiersprache) anspruchsvoll, da die Threads üblicherweise zusammenarbeiten müssen Grundregeln: Man entkopple die Threads so weit wie möglich Man achte auf alle Seiteneffekte (so lokal wie möglich, so wenig global wie möglich) Muss ein Thread auf die Ergebnisse eines anderen warten, so besteht immer die Gefahr eines Deadlocks! Ich warte auf das Buch... Ich warte auf das Schreib- zeug... Ha,ha... die warten in alle Ewigkeit

Learning By Doing Multithreading-Konzept Multithreading-Konzept in Java Klasse Wanderweg schreiben, die das Interface Runnable, d.h. die Methode run() implementiert Der Scheduler erzeugt einen neuen Thread und ruft run() auf. Der Thread "stirbt", sobald run() zu Ende läuft. public class WbzEx18 { public WbzEx18() { Wanderweg ww1 = new Wanderweg(70); Thread thread1 = new Thread(ww1); thread1.start(); Wanderweg ww2 = new Wanderweg(110); Thread thread2 = new Thread(ww2); thread2.start(); } public static void main(String[] args) { new WbzEx18(); } // WbzEx18.java import ch.aplu.turtle.*; class Wanderweg implements Runnable { private Turtle t = new Turtle(); private double angle; public Wanderweg(double angle) { this.angle = angle; } public void run() { while (true) { t.forward(100); t.left(angle); } class Wanderweg implements Runnable public void run() { while (true) { t.forward(100); t.left(angle); } Objekt dieser Klasse instanzieren, liefert Referenz ww1 Objekt der Klasse Thread instanzieren und dabei die Objektreferenz ww1 übergeben start()-Methode des Threads aufrufen class Wanderweg extends Thread Alternative: Wanderweg von Thread ableiten

Learning By Doing Thread beenden Um einen Thread zu beenden, lässt man die run()-Methode zu Ende laufen // WbzEx19.java import ch.aplu.turtle.*; public class WbzEx19 { class WanderTurtle extends Turtle implements Runnable { private double angle; public WanderTurtle(double angle) { this.angle = angle; } public void run() { label("Habe Volldampf"); while (isRunning) { forward(100); left(angle); } label("Bin müde"); } Man verwendet dazu eine boolesches Flag isRunning WanderTurtle ist eine Innere Klasse, damit sie und WbzEx19 Zugriff auf isRunning haben isRunning sollte man volatile deklarieren, da zwei verschiedene Threads darauf zugreifen private boolean isRunning = true; public WbzEx19() { new Thread(new WanderTurtle(70)).start(); try { Thread.currentThread().sleep(5000); } catch (InterruptedException ex) {} isRunning = false; } public static void main(String[] args) { new WbzEx19(); } Thread beenden volatile private boolean isRunning = true;