Java에서 Thread.sleep() – Java 스레드 sleep

소개

Java Thread.sleep() 메서드는 현재 스레드의 실행을 지정된 시간(밀리초 단위) 동안 일시적으로 중지하는 데 사용될 수 있습니다. 밀리초에 대한 인수 값은 음수일 수 없습니다. 그렇지 않으면 IllegalArgumentException이 throw됩니다.

sleep(long millis, int nanos)은 다른 메서드로 현재 스레드의 실행을 지정된 시간(밀리초 및 나노초 단위) 동안 일시적으로 중지하는 데 사용될 수 있습니다. 허용된 나노초 값은 0에서 999999 사이입니다.

이 문서에서는 Java의 Thread.sleep()에 대해 배울 것입니다.

Thread.sleep() 작동 방식

Thread.sleep()은 현재 스레드를 지정된 기간 동안 대기 상태로 전환하기 위해 스레드 스케줄러와 상호 작용합니다. 대기 시간이 지나면 스레드 상태가 실행 가능한 상태로 변경되고 CPU를 기다리며 추가 실행을 기다립니다. 현재 스레드가 잠자는 실제 시간은 운영 체제의 일부인 스레드 스케줄러에 따라 달라집니다.

Java Thread.sleep 중요한 포인트

  1. 항상 현재 스레드 실행을 일시 중단합니다.
  2. 스레드가 잠자고 깨어나서 실행을 시작하는 실제 시간은 시스템 타이머와 스케줄러에 따라 달라집니다. 조용한 시스템에서는 잠자는 시간이 지정된 시간과 거의 같지만, 바쁜 시스템에서는 조금 더 길어질 수 있습니다.
  3. Thread.sleep()는 획득한 모니터를 잃지 않거나 현재 스레드를 잠근 상태로 만들지 않습니다.
  4. 다른 스레드는 sleep 중인 현재 스레드를 중단시킬 수 있으며, 이러한 경우 InterruptedException이 발생합니다.

Java Thread.sleep 예제

Thread.sleep()을 사용하여 주 스레드 실행을 2초(2000 밀리초) 동안 일시 중단하는 예제 프로그램이 여기 있습니다:

ThreadSleep.java
package com.journaldev.threads;

public class ThreadSleep {

    public static void main(String[] args) throws InterruptedException {
        long start = System.currentTimeMillis();

        Thread.sleep(2000);

        System.out.println("Sleep time in ms = " + (System.currentTimeMillis() - start));
    }
}

먼저, 이 코드는 현재 시스템 시간을 밀리초 단위로 저장합니다. 그런 다음 2000 밀리초 동안 잠니다. 마지막으로, 이 코드는 이전 현재 시스템 시간을 빼서 새로운 현재 시스템 시간을 출력합니다:

Output
Sleep time in ms = 2005

이 차이가 정확히 2000 밀리초가 아닌 것에 유의하십시오. 이것은 Thread.sleep()의 작동 방식과 스레드 스케줄러의 운영 체제별 구현 때문입니다.

결론

이 글에서는 Java의 Thread.sleep()에 대해 배웠습니다.

더 많은 자바 튜토리얼로 학습을 계속하세요.

Source:
https://www.digitalocean.com/community/tutorials/thread-sleep-java