Ich habe eine Dauer Feldverfolgung verstrichene Zeit (in Minuten) in einem Runnable, die derzeit jede Minute Loops. Ich möchte, dass es stattdessen jede Sekunde die Schleife ausführt, aber meine Schecks feuern mehrmals ab. Unten ist der Kern meines Codes.Dauer # toMinutes in Runnable jede Sekunde
Runnable runnable = (new Runnable() {
@Override
public void run() {
Instant now = Instant.now();
Duration timeElapsed = Duration.between(start, now);
long elapsedMinutes = timeElapsed.toMinutes();
if (elapsedMinutes == (int) (totalRuntime() * .75)) {
// Do something when partially done.
// When set to second loops, this would run 60-ish times.
}
}
});
Ich habe versucht, einen Scheck hinzufügen, im Grunde wie folgt, zu sehen, ob die durch 60 geteilt Sekunden eine ganze Zahl war, obwohl das auch nicht funktioniert hat.
Kann jemand vorschlagen, was ich tun kann, um sicherzustellen, dass alles in der Schleife nur einmal pro Minute statt einmal pro Sekunde ausgeführt wird.
Sie können auch fragen, warum ich es eine Sekunde statt Minute mache, ist es, weil es eine if-Anweisung gibt, die die gesamte run
Methode einwickelt, und es muss etwas sofort starten, wenn es nicht besteht.
Dies ist nicht das Problem. Meine Schleife läuft einwandfrei. – Spedwards
@Spedwards Ich habe es bearbeitet. Sie können zwei Timer programmieren, die jede Sekunde ausgeführt werden und eine, die jede Minute ausgeführt wird. – explv