Java 스레드를 절전 모드로 전환하도록 호출하려는 경우 이러한 형식 중 하나를 다른 형식보다 선호하는 이유가 있습니까?
Thread.sleep(x)
또는
TimeUnit.SECONDS.sleep(y)
답변:
TimeUnit.SECONDS.sleep(x)를 호출 Thread.sleep합니다. 유일한 차이점은 가독성이며 사용하는 TimeUnit것이 명확하지 않은 기간 (예 : Thread.sleep(180000)vs. TimeUnit.MINUTES.sleep(3)) 동안 이해하기 더 쉬울 것입니다 .
참고로 sleep()in 의 코드 아래를 참조하십시오 TimeUnit.
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또는 MILLISECONDS[:-)
SECONDS 에 대한 수면으로 읽을 수 있지만 확실히 그것은 취향의 문제입니다. 반면, 메모 sleep()입니다 static에 대한 방법 Thread- 하나는 잠을 가정하는 스레드 명확하지 않다 주장 할 수 있도록 (무엇을합니까 Thread myThread = ...; myThread.sleep()의미?)
Thread.sleep(3, TimeUnit.SECONDS)
Thread.sleep(Duration.ofSeconds(s).toMillis())