Другой вариантThread.sleep(Duration.ofSeconds(s).toMillis())
грубоватый
Ответы:
126
TimeUnit.SECONDS.sleep(x)позвоню Thread.sleep. Единственная разница - удобочитаемость, и использование TimeUnit, вероятно, легче понять для неочевидных промежутков времени (например: Thread.sleep(180000)vs. TimeUnit.MINUTES.sleep(3)).
Для справки см. Ниже код sleep()in TimeUnit:
publicvoidsleep(long timeout)throws InterruptedException {
if (timeout > 0) {
long ms = toMillis(timeout);
int ns = excessNanos(timeout, ms);
Thread.sleep(ms, ns);
}
}
К вашему сведению: в проекте Selenium есть метод Sleeper, который не требует
перехвата
1
Согласен. Если вы хотите объявить время сна константой, которую вы можете изменить позже, скажем, с 1 минуты до 10 секунд, одно решение - это public static final long SLEEPING_TIME = TimeUnit.MINUTES.toMillis(1);. Это позволяет, Thread.sleep()но сохраняет преимущество удобочитаемости TimeUnit.
Ole VV
8
Они одинаковые. Я предпочитаю последний , потому что это более описательный характер и позволяет выбрать единицу времени (см TimeUnit): DAYS, HOURS, MICROSECONDS, MILLISECONDS, MINUTES, NANOSECONDS, SECONDS.
аргумент: я предпочитаю первый - я хочу, чтобы нить спала, а не SECONDSor MILLISECONDS[:-)
user85421 06
3
@CarlosHeuberger: ну, вы можете прочитать это как сон для xSECONDS , но, конечно же, это дело вкуса. С другой стороны, отмечают , что sleep()это staticметод по Thread- так можно было бы утверждать , что это не ясно , какой поток предполагают спать (что делает Thread myThread = ...; myThread.sleep()средний?)
Томаш Nurkiewicz
6
@CarlosHeuberger Было бы гораздо лучше уметь писатьThread.sleep(3, TimeUnit.SECONDS)
assylias 06
Обновлено, чтобы устранить любую путаницу в отношении эквивалентности из-за выбранных единиц
Рэйчел
@assylias Я согласен, но, к сожалению, я не могу это изменить [: - |
Thread.sleep(Duration.ofSeconds(s).toMillis())
Ответы:
TimeUnit.SECONDS.sleep(x)
позвонюThread.sleep
. Единственная разница - удобочитаемость, и использованиеTimeUnit
, вероятно, легче понять для неочевидных промежутков времени (например:Thread.sleep(180000)
vs.TimeUnit.MINUTES.sleep(3)
).Для справки см. Ниже код
sleep()
inTimeUnit
:public void sleep(long timeout) throws InterruptedException { if (timeout > 0) { long ms = toMillis(timeout); int ns = excessNanos(timeout, ms); Thread.sleep(ms, ns); } }
источник
public static final long SLEEPING_TIME = TimeUnit.MINUTES.toMillis(1);
. Это позволяет,Thread.sleep()
но сохраняет преимущество удобочитаемостиTimeUnit
.Они одинаковые. Я предпочитаю последний , потому что это более описательный характер и позволяет выбрать единицу времени (см
TimeUnit
):DAYS
,HOURS
,MICROSECONDS
,MILLISECONDS
,MINUTES
,NANOSECONDS
,SECONDS
.источник
SECONDS
orMILLISECONDS
[:-)SECONDS
, но, конечно же, это дело вкуса. С другой стороны, отмечают , чтоsleep()
этоstatic
метод поThread
- так можно было бы утверждать , что это не ясно , какой поток предполагают спать (что делаетThread myThread = ...; myThread.sleep()
средний?)Thread.sleep(3, TimeUnit.SECONDS)