Hallo!
Ich habe einen Threadpool, der mehrere Worker startet, die parallel ihre Operationen ausführen. Zu Testzwecken möchte ich nun erreichen, dass immer nur einer der Worker gleichzeitig aktiv ist, während die anderen warten.
Wenn der aktive Worker eine Operation beendet hat, soll er den nächsten benachrichtigen, dass dieser nun eine Operation durchführen darf. Wenn es also z.B. 4 Worker gibt, sollen diese in der Reihenfolge 1, 2, 3, 4, 1, 2, 3, 4, ... jeweils eine Operation ausführen.
Das Benachrichtigen habe ich mit einer statischen Integervariable gelöst, in der der aktive Worker jeweils die Nummer des nächsten speichert. Das Problem: Ich schaffe es nicht, die Worker zu pausieren, da wait() in der run()-Funktion des Workers zu einer IllegalMonitorStateException führt. Hat jemand eine Idee, wie man das machen könnte?
Ich habe einen Threadpool, der mehrere Worker startet, die parallel ihre Operationen ausführen. Zu Testzwecken möchte ich nun erreichen, dass immer nur einer der Worker gleichzeitig aktiv ist, während die anderen warten.
Wenn der aktive Worker eine Operation beendet hat, soll er den nächsten benachrichtigen, dass dieser nun eine Operation durchführen darf. Wenn es also z.B. 4 Worker gibt, sollen diese in der Reihenfolge 1, 2, 3, 4, 1, 2, 3, 4, ... jeweils eine Operation ausführen.
Das Benachrichtigen habe ich mit einer statischen Integervariable gelöst, in der der aktive Worker jeweils die Nummer des nächsten speichert. Das Problem: Ich schaffe es nicht, die Worker zu pausieren, da wait() in der run()-Funktion des Workers zu einer IllegalMonitorStateException führt. Hat jemand eine Idee, wie man das machen könnte?