A
dvanced Java
S
ervices
Threads
Thread, ThreadStart und ParameterizedThreadStart
Grundlagen
Threadobjekte erzeugen und Thread starten
Beispiele
Threadkonstruktor erhält den Namen einer Methode
Threadkonstruktor erhält einen Lambdaausdruck
Threadkonstruktor erhält eine Methode mit Parameter
Threadname und ThreadId
Threadstate
Join und Yield
Eltern- und Kindprozesse
Join(), Join(int millisecondsTimeout), Join(TimeSpan timeout)
Beispiel
Die Threadklasse
Die Mainklasse
Ein Ablauf mit Join()
Zwei Abläufe mit auskommentiertem Join()
Yield()
Beispiel
Die Threadmethode
Die Mainmethode
Drei Abläufe mit Yield()
Drei Abläufe mit auskommentiertem Yield()
Dämonen (Backgroundthreads)
Keine Dämonen
Dämonen
Threads beenden
Obsolete: Resume(), Suspend(), u.a.
Threads beenden mit break
Threads beenden mit Interrupt()
Interrupt() selbst beendet keinen Thread
Reagieren auf eine Interruptanforderung
Nichunterbrechbares Warten mit SpinWait()
Nichunterbrechbares Warten ohne SpinWait()
Datenübergabe an Threads
Auf welche Daten hat ein Thread Zugriff
Daten über den Parameter vom Typ Object übergeben
Datenübergabe über den Konstruktor
Datenübergabe durch Verwendung von Lambda-Ausdrücken
Fallen bei der Verwendung von Closures
ThreadLocal
Synchronisieren von Methoden und Blöcken
Synchronisieren von Methoden
Synchronisieren von Blöcken mit lock
Synchronisieren von Blöcken im statischen Kontext
Das Verhalten von join(), sleep(), yield() in Bezug auf Locks
Reentranz mit MethodImplOptions.Synchronized) oder lock()
Monitor.wait() und Monitor.Pulse()
Wait() und Pulse() sind ein Team
Wait() und Pulse() verwenden
Beispiel 1
Monitor.Enter() und Monitor.Exit()
Beispiel 2
Consumer-Producer Modell
Beispiel
Ablauf für verschiedene, aber feste sleep()-Zeiten
Ablauf für zufällig gewählte sleep()-Zeiten
Timer
Beispiel 1: Single Shot with Delay
Beispiel 2: Periodic Shot with Delay
Beispiel 3: Selfterminating periodic Shot with Delay
Beispiel 4: Single Shot with Delay (TimeSpan)
Beispiel 5: Periodic Shot with Delay (TimeSpan)
Beispiel 6: Selfterminating periodic Shot with Delay (TimeSpan)