У меня есть длительность отслеживания полей длительности (в минутах) в Runnable, которая в настоящее время проходит каждую минуту. Я хочу, чтобы он запускал цикл каждую секунду вместо этого, но мои проверки срабатывают несколько раз. Ниже приведен сущность моего кода.Продолжительность # toMinutes в Runnable Each Second
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.
}
}
});
Я попытался добавить чек, в основном следующим образом, видя, если секунды, разделенные на 60 было целым числом, хотя это тоже не сработало.
long elapsedSeconds = timeElapsed.getSeconds();
if (elapsedSeconds/60 == Math.round(elapsedSeconds/60)) {
// Then do other stuff
}
Может кто-то предложить что-то, что я могу сделать, чтобы все в цикле запускалось только один раз в минуту, а не раз в секунду.
Возможно, вы также спрашиваете, почему я делаю это секундой вместо минуты, это потому, что есть if-statement, обертывающий весь метод run
, и он должен что-то начать немедленно, если он не пройдет.
Это не проблема. Моя петля работает отлично. – Spedwards
@Spedwards Я его отредактировал. Вы можете запланировать два таймера, которые выполняются каждую секунду, и одну, которая выполняется каждую минуту. – explv