Wie synchronisiert Threads über einen Zeitraum, der länger ist als ein Methoden-Aufruf?
In Java besitzt jedes Objekt eine Warteschlange (wait set) von Threads.
ob.wait()
: der aktuelle Thread wartet (blockiert),
d. h. wird in die Warteschlange von ob
aufgenommen,
ob.notify()
: ein beliebiger der Threads
aus der Warteschlange von ob
wird aufgeweckt.
für jede Methode muß man den Objekt-Lock besitzen:
wait()
gibt den Lock frei
notify()
aufgeweckte Thread
erhält den Lock zurück.