쓰레드를 일시 정지 상태로 만드는 방법
- Thread 클래스의 static 메서드 sleep() 메서드를 호출하면 해당 쓰레드는 잠시 일시 정지 상ㅌ가 되어 Waiting Pool로 이동함
- sleep() 메서드 파라미터로 밀리초 단위 또는 나노초 단위의 시간을 설정하면 해당 시간이 만료된 후 다시 실행대기 상태로 변경됨 => 단, 타이머 동작 중 interrupt() 메서드가 호출되면 타이머가 만료되지 않아도 강제로 쓰레드 깨움
- sleep() 메서드 호출 시 반드시 try/catc 블록 처리 필수!
- 특정 쓰레드의 실행 시간에 대한 간격을 설정하거나, 우선순위에 따라 실행되지못하는 쓰레드의 실행 권한을 부여하기 위해 특정 쓰레드들을 잠시 정지시킬 목적으로 사용
- 지정된 시간만큼 정확히 sleep 후에 복귀하는 것이 아니라 쓰레드 상태 저장 및 자원 교환에 필요한 시간이 추가되므로 지정된 시간보다 약간의 딜레이가 포함될 수 있다!
기본문법
try {
Thread.sleep(밀리초);
} catch(InterruptedException e) {
// interrupt() 메서드가 호출될때(쓰레드가 깨어날 때)
// 실행할 작업을 기술..
현재 시각 정보 가져오기
for(int i = 1; i <= 10; i++) {
//현재 시각 정보 가져오기
LocalTime now = LocalTime.now();
System.out.println(now);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
'JAVA' 카테고리의 다른 글
[JAVA] 자바 I/O - 모니터로부터 데이터를 출력하는 방법 2가지 (0) | 2023.12.07 |
---|---|
[JAVA] 자바 I/O - 키보드로부터 데이터를 입력받아 처리하는 방법 5가지 (1) | 2023.12.05 |
[JAVA] 쓰레드의 우선순위 (2) | 2023.11.28 |
[JAVA] 멀티쓰레딩 구현 코드의 변형 (1) | 2023.11.28 |
[JAVA] 이미 클래스를 상속받은 클래스에 멀티쓰레딩을 구현해야 하는 경우 (1) | 2023.11.28 |