Ich entwickle eine Queue-Simulation, die Swing-Timer verwendet, um Objekte nach bestimmten Zeitspannen aus der Warteschlange zu entfernen. Das Intervall wird bestimmt, indem auf das nächste Objekt in der Warteschlange geschaut wird, eine Ganzzahl daraus erhalten wird und die Verzögerung des entsprechenden Zeitgebers eingestellt wird.Ändern der Verzögerung eines Swing-Timers während der Laufzeit
Hier ist der entsprechende Ausschnitt aus dem Programm (Hinweis: _SECONDS_PER_ITEM
ist eine Konstante, an anderer Stelle definiert 2000
):
// stop the timer
qTimer[q].stop();
// peek at how many items the customer has, and set the delay.
qTimer[q].setDelay(customerQueue[q].peek().getItems()*_SECONDS_PER_ITEM);
// the next time around, this method will see the flag, and dequeue the customer.
working[q] = true;
// denote that the customer is active on the UI.
lblCustomer[q][0].setBorder(new LineBorder(Color.RED, 2));
// start the timer.
qTimer[q].start();
Das Problem, das ich habe, ist, dass jeder Kunde, egal, wie viele Gegenstände, die sie haben, verarbeitet wird, in einer Sekunde.
Gibt es eine andere Methode oder Technik, die ich verwenden sollte, um die Verzögerung einzustellen?