Thread

Werbung
Thread Programmierung in Java
VO Aktuelle Programmiersprache
•
•
•
•
•
•
Begriffserklärung, Anwendung
Implementierung in Java
Codebeispiele
Testprogramm
Kritische Abschnitte
Monitor, Semaphore
Andreas Griesser
Thomas Aichholzer
1
Threads
• Ein Thread wird auch leichtgewichtiger Prozess genannt.
• Durch den Einsatz von Threads („Programmfäden“) kann
man den parallelen Zugriff auf Ressourcen verwirklichen.
new
start()
Prozess
Threads
wait()
sleep()
suspend()
blocked
runnable
stop()
dead
non-runnable
notify()
slept
resume()
unblocked
2
Multithreading
• Multithreading bedeutet nun, dass es möglich ist,
mehrere Threads parallel laufen zu lassen (bei nur einem
Prozessor ist dies natürlich keine echte Parallelität).
3
Single vs. Multithreading
• Single-Threaded
Methode c
Methode a
Methode b
t
• Multi-Threading
Methode c
Methode c
Methode a
Methode b
t
4
Multithreading in Hardware
• Hyperthreading - virtuelle Prozessoren
• Betriebssystemabhängig – ab XP oder Kernel 2.4.18
• Unbenutzte Ausführungseinheiten werden belegt
• Software muss entsprechend geschrieben werden
5
Multithreading – Probleme
• Threads benutzen gleiche Ressourcen und Daten.
Bei Zugriff auf gemeinsam genutzte Ressourcen müssen
Schutzmechanismen eingebaut werden.
• Threads, die mehrere Ressourcen gleichzeitig benötigen,
können sich gegenseitig blockieren (Deadlock)
• Nicht jede Virtual Machine verteilt CPU-Zeit gerecht,
laufende Threads sollten anderen eine Chance geben
• Mögliche Zustände oft schwer verständlich,
da Parallelität nicht gerade intuitiv verständlich
6
Thread Programmierung in Java
Vielen Dank für ihre Aufmerksamkeit!
Fragen?
Andreas Griesser
[email protected]
Thomas Aichholzer
[email protected]
7
Herunterladen