728x90
반응형
Thread.sleep() 은 자바(Java) 에서 현재 실행 중인 스레드를 일정 시간 동안 일시 정지(대기) 시키는 메서드예요.
📌 기본 형식
Thread.sleep(long millis) throws InterruptedException
- millis : 멈출 시간(밀리초 단위, 1초 = 1000ms)
오버로드된 버전으로 나노초 단위까지 받을 수도 있습니다:
Thread.sleep(long millis, int nanos) throws InterruptedException
📌 동작 방식
- 호출한 스레드는 지정된 시간 동안 실행 상태(Running) 에서 일시 정지(Timed Waiting) 상태로 전환됩니다.
- 지정된 시간이 지나면, 다시 Runnable(실행 대기) 상태로 돌아가고, CPU 스케줄러가 잡아주면 실행을 계속합니다.
- 정확히 지정한 시간만큼 멈춘다고 보장되지 않습니다. (운영체제 스케줄링에 따라 더 늦게 깨어날 수 있음)
📌 예제
public class SleepExample {
public static void main(String[] args) {
System.out.println("시작");
try {
Thread.sleep(2000); // 2초 동안 멈춤
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("2초 후 실행");
}
}
실행 결과
시작
(2초 대기)
2초 후 실행
📌 주의사항
- InterruptedException 반드시 처리해야 함
→ 스레드가 sleep 상태일 때 다른 스레드가 interrupt()를 호출하면 예외가 발생합니다. - Thread.sleep()은 현재 스레드만 멈춥니다.다른 스레드에는 영향을 주지 않아요.
- UI 프로그램 (예: Swing, JavaFX)에서는 메인(UI) 스레드에서 sleep()을 쓰면 UI가 멈춘 것처럼 보일 수 있으니, 별도 스레드에서 사용하는 게 좋아요.
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt(); // 인터럽트 상태 복원
}
728x90
반응형
'JAVA' 카테고리의 다른 글
[JAVA] synchronized 블록 (0) | 2025.09.29 |
---|---|
[JAVA] Object.wait() (0) | 2025.09.25 |
[JAVA] String 배열 초기화 (0) | 2025.07.21 |
[JAVA] Stream보다 forEach가 더 나은 경우 (0) | 2025.05.10 |
[JAVA] 람다식 표현을 메서드 참조 방식으로 변경하기 + 장점 (0) | 2025.05.09 |