Перерыв в цикле через 20 секунд - PullRequest
1 голос
/ 07 апреля 2019

Как я могу выйти из цикла while через 20 секунд? Я хочу избежать использования тем.

while (var) {
    // ...do something

    if (20secondsIsPassed) {
        break;
    }
}

Ответы [ 2 ]

4 голосов
/ 07 апреля 2019

Если у вас есть if внутри цикла while, который проверяет прошедшее время, то у вас не будет ровно 20 секунд, но не менее 20 с.Самый простой способ - что-то вроде этого:

LocalDateTime then = LocalDateTime.now();
while (true) {
    // logic
    if (ChronoUnit.SECONDS.between(then, LocalDateTime.now()) >= 20) break;
}
3 голосов
/ 07 апреля 2019

Просто зная, что каждая секунда представляет 1000 миллисекунд, вы можете сделать следующий расчет:

long seconds = System.currentTimeMillis();
    while (var && (seconds + (20 * 1000) > System.currentTimeMillis())) {
        // ...do something
    }
...