thread1 stoppt thread2 mit wait() und notify() ?

Status
Nicht offen für weitere Antworten.
A

Alexey77

Gast
Hallo, Java-Freunde!

Ich zerbreche mir den Kopp schon mehrere Tage mit diesem wait und notify.

Was ich möchte: es gibt 3 threads. Master, KW und Counter.

Master liest TastaturEingaben ständig ab; (gemacht)


KW prüft die Tastatureingabe und wenn "3" eingegeben - hält er den Thread Counter an.
Sobald 1 oder 2 neu eingegeben wurde - lässt der KW den Counter wieder laufen.

Das is alles. Zu erledigen ist das durch wait und notify.

Die Struktur meines Programms ist folgende (schematisch und sehr vereinfacht, da gibt es viele andere sachen, die irrelevant fürs Problem sind)

Code:
Classe masterslave

..... main..  {

Thread master - starten
Thread KW - starten
Thread Counter starten


}

Classe master extends  thread

synchronized run

while true


{ tastatureingabe "1", "2" oder "3"  }

Classe KW extends thread

synchronized run

while true


 { if master bekam "3" - setze boolean flag auf true

}



Classe  Counter extends Thread 
{
synchronized run

while true

if flag = true - currentThread() - try wait
else notifyAll();

}



So, funktioniert natürlich nicht. Also - auf wartemodus setzt er schon, aber wenn man 1 oder 2 dann eingibt, geht der Counter aus dem Schlafen nicht mehr raus.

Was mache ich falsch? (Ich weiss, alles :_) )


Danke!
 
S

SlaterB

Gast
wenn 1 oder 2 gedrückt wird, dann muss KW das flag wieder zurücksetzen und
a)
Counter durch notify() aufwecken, oder
b)
Counter wartet gar nicht sondern schäft immer nur 100 ms und prüft selber ständig das Flag


für Fall a) brauchst du ein Synchronisations-Objekt, dass beide Threads kennen

Counter ruft
object.wait();


KW ruft
object.notify();
 
A

Alexey77

Gast
SlaterB hat gesagt.:
für Fall a) brauchst du ein Synchronisations-Objekt, dass beide Threads kennen

Counter ruft
object.wait();


KW ruft
object.notify();



Eine Methode? Wie ist dieses Objekt zu realisieren?
Könntest Du etwas näher beschreiben, bitte?

Danke!
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben