wait(), notify()

alfredBanause

Grünschnabel
Hallo an alle,

ich habe folgendes Problem:

ich habe ein Hauptthread (Th-1), der einen zweiten Thread (Th-2) startet. (Th-2) soll dabei in einer while-Schleife laufen. Am Ende der Schleife soll sich der Thread immer in den "wait()"-Modus versetzen, also schlafen legen. (Th-2) soll solange schlafen bis (Th-1) notify() aufruft. Dann beginnt bei Th-2 der nächste Schleifen durchlauf.

Zur Anmerkung: Beide Threads sind derzeit in einer Klasse.

Von der Theorie denke ich habe ich das Problem soweit gut verstanden, nur habe ich Probleme bei der Umsetzung. Es gelingt mir zwar Th-2 mit wait schlafen zu legen, jedoch nicht aufzuwecken.

Ich hoffe, dass mir jemand helfen kann.


Viele Grüße und vielen Dank im Voraus,

alfredbBanause
 
Hi alfred,

um dir bei deinem Problem optimal helfen zu können wäre es gut deinen Quelltext, oder noch besser ein Minimal working example zu haben an dem das Problem deutlich wird.

So weit ich das bisher sehen kann könnte ich mir verschiedene Sachen vorstellen die passiert sein könnten:

1.:
Th-1 startet Th-2
Th-2 ruft notify auf Th-2 auf
Th-2 ruft wait auf

In diesem Fall wäre Th-2 nicht schnell genug gestartet, sodass das notify von Th-1 in s Leere läuft
und Th-2 ewig auf sein notify wartet.

2.: Du rufst notify auf unterschiedlichen Objekten auf. Das wäre eine weitere Möglichkeit, allerdings halte ich es eher für unwahrscheinlich, da du ja selber sagtest, dass du bisher nur ein Objekt hast.


Im 1. Fall ließe sich das Problem denke ich mit einer Semaphore beheben. Im zweiten Fall würde es ausreichen das selbe Objekt zu verwenden.

Naja, solange wir deinen Quelltext nicht kennen ist das alles nur Spekulation ;-)
 
Zurück