Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

FH-Hof Threads Richard Göbel. FH-Hof Threads - Einführung Ein Thread ermöglicht die quasi-parallele Bearbeitung unterschiedlicher Aufgaben. Threads laufen.

Ähnliche Präsentationen


Präsentation zum Thema: "FH-Hof Threads Richard Göbel. FH-Hof Threads - Einführung Ein Thread ermöglicht die quasi-parallele Bearbeitung unterschiedlicher Aufgaben. Threads laufen."—  Präsentation transkript:

1 FH-Hof Threads Richard Göbel

2 FH-Hof 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

3 FH-Hof 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

4 FH-Hof 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)

5 FH-Hof 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;}}}}}

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

7 FH-Hof 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)

8 FH-Hof Interface Runnable 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();

9 FH-Hof Problem: Synchronisation von Threads Thread AThread B Puffer für Zeichenkette ein Test Dies ist schreibt liest Dies ist schreibt Dies ist

10 FH-Hof 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

11 FH-Hof Verwendung des Konstrukts synchronized Thread AThread B StringBuffer b synchronized (b) {... b.append(... )... b.append(...) } String s;... synchronized (b) {... s = new String(b);... }...

12 FH-Hof Manuelle Synchronisierung Thread AThread B Object o synchronized (o) {... o.notify()... }... synchronized (o) {... o.wait();... }...

13 FH-Hof 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


Herunterladen ppt "FH-Hof Threads Richard Göbel. FH-Hof Threads - Einführung Ein Thread ermöglicht die quasi-parallele Bearbeitung unterschiedlicher Aufgaben. Threads laufen."

Ähnliche Präsentationen


Google-Anzeigen