Thread.sleep против TimeUnit.SECONDS.sleep - PullRequest
74 голосов
/ 06 марта 2012

Если я собираюсь позвонить, чтобы поток Java перешел в спящий режим, есть ли причина предпочесть одну из этих форм другой?

Thread.sleep(x)

или

TimeUnit.SECONDS.sleep(y)

Ответы [ 2 ]

102 голосов
/ 06 марта 2012

TimeUnit.SECONDS.sleep(x) вызовет Thread.sleep.Единственная разница заключается в удобочитаемости, и использование TimeUnit, вероятно, легче понять для неочевидных длительностей (например: Thread.sleep(180000) против 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);
    }
}
7 голосов
/ 06 марта 2012

Они одинаковы. Я предпочитаю последнее, потому что оно более наглядно и позволяет выбрать единицу времени (см. TimeUnit): DAYS, HOURS, MICROSECONDS, MILLISECONDS, MINUTES, NANOSECONDS, SECONDS.

...