Если у меня будет призыв к тому, чтобы Java Thread переспал, есть ли причина предпочесть одну из этих форм над другой?
Thread.sleep(x)
или
TimeUnit.SECONDS.sleep(y)
Ответ 1
TimeUnit.SECONDS.sleep(x) вызовет Thread.sleep.
Единственная разница - читаемость и использование TimeUnit, вероятно, легче понять для неочевидных длительностей (например: Thread.sleep(180000) vs. TimeUnit.MINUTES.sleep(3)).
Для справки см. ниже код sleep() в TimeUnit:
public void sleep(long timeout) throws InterruptedException {
if (timeout > 0) {
long ms = toMillis(timeout);
int ns = excessNanos(timeout, ms);
Thread.sleep(ms, ns);
}
}
Ответ 2
Они одинаковы. Я предпочитаю последнее, потому что он более описателен и позволяет выбрать единицу времени (см. TimeUnit): DAYS, HOURS, MICROSECONDS, MILLISECONDS, MINUTES, NANOSECONDS, SECONDS.