web-dev-qa-db-fra.com

Thread.sleep contre TimeUnit.SECONDS.sleep

Si je souhaite recevoir un fil Java en veille, existe-t-il une raison de préférer l'une de ces formes à l'autre?

Thread.sleep(x)

ou

TimeUnit.SECONDS.sleep(y)
77
Rachel

TimeUnit.SECONDS.sleep(x) appellera Thread.sleep . La seule différence est la lisibilité et utiliser TimeUnit est probablement plus facile à comprendre pour des durées non évidentes (par exemple: Thread.sleep(180000) vs TimeUnit.MINUTES.sleep(3)) .

Pour référence, voir ci-dessous le code de sleep() dans TimeUnit:

public void sleep(long timeout) throws InterruptedException {
    if (timeout > 0) {
        long ms = toMillis(timeout);
        int ns = excessNanos(timeout, ms);
        Thread.sleep(ms, ns);
    }
}
106
assylias

Ce sont les mêmes. Je préfère ce dernier car il est plus descriptif et permet de choisir l’unité de temps (voir TimeUnit ): DAYS, HOURS, MICROSECONDS, MILLISECONDS, MINUTES, NANOSECONDS, SECONDS.

7