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())