Gibt es eine Möglichkeit, einen Thread in einem Zustand zu halten, in dem er auf Änderungen wartet? Ich meine warten, bis etwas passiert (Var ändern, Methode aufrufen, etc.) vielleicht braucht es Event Listener, oder synchronisierte Objekte/Methoden..
Der übliche Ansatz für Statemachines wie diese
Das verwendet eine do{..}while(true) Schleife, die für einzelne threaded (und keine GUI) Anwendung funktionieren könnte, aber es kann nicht mit Threads verwendet werden (zumindest wollen Sie einen Kern für jeden Thread-Zustandsautomaten verwenden)
Um diese prozessorintensive Aufgabe zu vermeiden, gibt es einen einfachen (und hässlichen) Weg ist ein "periodischer Checker", also das Hinzufügen eines Sleep eine andere Idee ist die Definition eines synchronisierten Objekts und die Verwendung von wait anstelle von thread Sleep
Beispiel:
do{
Switch(state)
{
case STATE_A:
//..A things
break;
case STATE_B:
//..B things
break;
...
case STATE_Z:
//..Z things
break;
}
// Here! => wait()? Thread.sleep(TIME_CONST)? //Hold and yield
}while(powerOn);
Der Nachteil ist die zusätzliche Komplexität durch die Verwendung von synchronisiert oder dass alles, was innerhalb von TIME_CONST passiert, unsichtbar ist.
Ich würde gerne wissen, welche anderen Ideen es dafür gibt, Danke!