Multithreading

Werbung
Multithreading
Java-Multithreading
Jordan Pentchev
1
Einleitung
• Was ist Threads
eigenständiges Programm die sequenzielle Folge von
Instruktions- ausführt
• Nebenläufige Ausführung von Routinen auf einem
gemeinsamen Datensegment.
Java-Multithreading
Jordan Pentchev
2
Threads in Java
• In der JVM laufen alle Java-Programme als Threads
• Ein Thread in Java auch ein Objekt.
• Mit Hilfe der Klasse Thread der Java-API lassen sich auf
zwei unterschiedliche Weisen weitere Threads kreieren.
Java-Multithreading
Jordan Pentchev
3
Zustände eines Threads
Java-Multithreading
Jordan Pentchev
4
Betriebsystem
Prozess 1
Prozess 2
Thread 1
Speicher
Thread N
Java-Multithreading
Jordan Pentchev
5
Anhalten von Threads
• Mit dem Methode Thread.stop(); kann ein Thread
angehalten werden
Leider ist diese Methode depricated und kann nicht mehr
ab Version 1.2 benutzen
Java-Multithreading
Jordan Pentchev
6
Threads Intrrupt
• Die Methoden:
interrupt()
isInterrupted()
interrupted()
Java-Multithreading
Jordan Pentchev
7
Thread Sysnchronisation
• Schlüsselwort synchronized
Synchronisieren durch
aufrufen der Methode synchronized(Object)
Java-Multithreading
Jordan Pentchev
8
Monitoren
• Synchronisation von Nebenläufigen Prozesse
Durch Kapselung im kritische Beriech.
Methode synchrinized();
Monitoren min synchrinized
Java-Multithreading
Jordan Pentchev
9
Nebenläufigkeit
• Parallel ausführjung von mehreren Threads
• Gleichzeitig auf selbe Ressourcen zu greifen
• Bei nicht synchronisierte Threads kann es vorkommen
dass sie sich gegenseitig blockieren.
Java-Multithreading
Jordan Pentchev
10
Monitoren
• Methoden
– Wait()
– Notify()
Java-Multithreading
Jordan Pentchev
11
Deadlock
• Zustände als Folge nicht ausreichende Synchronisation
• deadlock
Java-Multithreading
Jordan Pentchev
12
Prioritäten
• Threads verwaltjung
Prioritäten unter Java:
java.lang.Thread
public static final int MAX_PRIORITY 10
public static final int MIN_PRIORITY 1
public static final int NORM_PRIORITY 5
Beispiel
Java-Multithreading
Jordan Pentchev
13
Dämon Threads
• Jedes Java-Programm hat Daemon-Threads.
– Garbage Collector als Dämon-Thread
Dämon-Threads laufen in Hintergrund sind so wohl von
der
System als auch von der Programmierer einsetzbar
wichtig Ihrer Status wird nicht geprüft bei beendigjung das
Programm, deshalb muss jeder Dämon-Thread
beendigjung
mitten in der run()-Methode eintreten
Java-Multithreading
Jordan Pentchev
14
• Als letzte Beispiel
Die denkende Philosophen
Java-Multithreading
Jordan Pentchev
15
• Verwendete Literatur:
– http://www.dpunkt.de/java/
– http://java.sun.com/
– Handbuch der Java Programmierung Guido Krüger
Java-Multithreading
Jordan Pentchev
16
Ende
• Danke für die Aufmerksamkeit!
Java-Multithreading
Jordan Pentchev
17
Herunterladen