Threads Richard Göbel.

Slides:



Advertisements
Ähnliche Präsentationen
programmiert April-Juni 2003 von Knut Riechmann
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
Klassen - Verkettete Liste -
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Konzepte objektorientierter Systeme
Beim Start eines Prozesses in Windows NT, 2000 wird a der Programmtext aus der exe-Datei ab der dort angegebenen Adresse gespeichert.
Einführung in die Programmierung Zusammenfassung
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
Java: Programmierung grafischer Oberflächen
Java: Reversi Spielbrett
Java: Objektorientierte Programmierung
FH-Hof Geometrie Richard Göbel. FH-Hof Aufbau des virtuellen Universums.
Java2D Richard Göbel.
Java: Programmierung grafischer Oberflächen
Java: Dynamische Datentypen
Listen Richard Göbel.
FH-Hof Eine kleine Theorie der Zeit Richard Göbel.
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
FH-Hof Verwaltung von Zeichenketten 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.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
FH-Hof Interaktion Richard Göbel. FH-Hof Interaktion mit der Klasse Behavior Behavior-Objekte sind Knoten des Szenengraphen. Behavior-Objekte werden durch.
Java: Referenzen und Zeichenketten
Baumstrukturen Richard Göbel.
FH-Hof Java Packages Richard Göbel. FH-Hof Das Modulkonzept für Java Packages dienen zur Strukturierung größerer Java- Programme Ein Package kann: eigene.
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.
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.
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.
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.
Bestimmung des ggT zweier Zahlen
© 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.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
Zurück zur ersten Seite SEP Entwurf und Implementierung einer effizienten Rechenstruktur zur Baumdarstellung mittels Java-Texteditoren Betreuer : Matthias.
Template Pattern Richard Göbel.
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
FH-Hof Singleton Pattern Richard Göbel. FH-Hof Motivation Bestimmte Klassen sollen nur ein Objekt haben Nur ein Fabrikobjekt für eine Fabrikklasse Zentraler.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Java: Programmierung grafischer Oberflächen
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Einführung in JavaKara
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Threads in Java Wiederholung der BS Grundlagen Alois Schütte AOSD1.
2. Kommunikation und Synchronisation von Prozessen 2
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
Abstrakte Klassen und das Interface-Konzept
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,
Tutorium Software-Engineering SS14 Florian Manghofer.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, SS Exceptions in der Programmiersprache Java.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Venusspiegel und Marsschild
Die Klasse Geist.
Die Klasse Vielfrass in Java
Felder in Java.
 Präsentation transkript:

Threads Richard Göbel

Threads - Einführung Ein Thread ermöglicht die quasi-parallele Bearbeitung unterschiedlicher Aufgaben. Threads laufen im Unterschied zu Prozessen im gleichen virtuellen Speicher ab: Threads lassen sich effizienter starten Gemeinsamer Zugriff auf globale Objekte möglich Fehler in einem Thread können sich auch auf andere Threads auswirken

Threads - Anwendungsbeispiele Grafische Benutzeroberfläche Bearbeitung einer größeren Aufgabenstellung starten Integration von Animationen Netzwerkprogrammierung Server bedient unterschiedliche Clients gleichzeitig Client kommuniziert asynchron mit dem Server und vieles andere mehr

Optionen zur Erzeugung eines Threads Definition einer Unterklasse der Klasse Thread Bereitstellung der Methode void run() mit dem Rumpf des Threads Thread kann mit Methode void start() gestartet werden Thread wartet mit Methode void sleep(int msek) Thread soll selbständig die Arbeit beenden (z. B. als Ergebnis eines externen Signals) Implementierung des Interface Runnable Bereitstellung der Methode void run() Erzeugung eines Threads mit dem Konstruktor Thread(Runnable target)

Programmbeispiel - News Ticker Teil 1 JLabel display = new JLabel(); boolean tickerRunning = false; class NewsTicker extends Thread { private String news = ". . ."; private int l = 16; public void run() { int s; while (tickerRunning) { for (int i = -l; i <= news.length()-l; i++) { if (i < 0) s = 0; else s = i; display.setText(news.substring(s,i+l)); try{sleep(200);} catch (InterruptedException e) {return;}}}}}

Programmbeispiel - News Ticker Teil 2 Thread starten Thread ticker = new NewsTicker(); tickerRunning = true; ticker.start(); Thread anhalten tickerRunning = false;

Zustand eines Threads Thread wurde erzeugt aber noch nicht gestartet Thread wurde gestartet und läuft (runnable) Thread wurde gestartet und wartet (not runnable) Methode „run“ des Thread wurde beendet (dead)

Implementierung des Interface Runnable durch eine beliebige Klasse: class MyClass implements Runnable { . . . public void run() { } Starten des Thread MyClass c = new MyClass( . . . ); Thread aThread = new Thread(c); aThread.start();

Problem: Synchronisation von Threads Puffer für Zeichenkette Thread A Thread B schreibt Dies ist liest Dies ist schreibt Dies ist ein Test

Synchronisation mit einem Monitor - Optionen Deklaration einer Methode mit dem Schlüsselwort synchronized Deklaration eines Blocks mit dem Konstrukt synchronized ( expression ) block Die so markierten Anweisungen dürfen nicht gleichzeitig : auf das zugehörige Objekt für die Methode oder auf das Ergebnisobjekt des Ausdrucks angewendet werden Der interne Scheduler blockiert bei Bedarf die Ausführung von Anweisungen für ein Objekt

Verwendung des Konstrukts „synchronized“ Thread A StringBuffer b Thread B synchronized (b) { . . . b.append( . . . ) b.append( . . .) } String s; . . . synchronized (b) { s = new String(b); }

Manuelle Synchronisierung Thread A Object o Thread B synchronized (o) { . . . o.notify() } . . . synchronized (o) { o.wait(); }

Probleme bei der Verwendung eines Monitors Deadlock (Verklemmung): Threads greifen wechselweise auf benötigte Ressourcen zu. Starvation: Ein Thread wird aufgrund der Arbeitsweise anderer Threads nie aufgerufen. Lösung: Realisierung einer Kommunikationsstruktur, die aus den Rahmenbedingungen der Anwendung diese Probleme ausschließt