sleep()
static void sleep(long millis)
static void sleep(long millis, int nanos)
- 예외처리를 해야 한다.(InterruptedException이 발생하면 깨어남)
(항상 예외처리 하기가 귀찮기 때문에 다음과 같은 method를 만들어서 사용하는 편)
void delay(long millis){
try{
Thread.sleep(millis);
} catch(InterruptedException e) {}
}
delay(15);
- 특정 쓰레드를 지정해서 멈추게 하는 것이 불가능하다.(∵ static)
(클래스 이름을 써서 사용해야 오해의 여지가 없다.)
try{
Thread.sleep(2000);
} catch(InterruptedException e) {}
interrupt()
- 대기상태(WAITING)인 쓰레드를 실행대기 상태(RUNNABLE)로 만든다.
void interrupt()
boolean isInterrupted()
static boolean interrupted()
- ※ interrupted()는 static 메서드이므로 현재 쓰레드의 interrupted 상태를 알려줌! Thread.interrupted() 와 같이 사용. th1.interrupted() (X)
- interrupted() 사용 이유 : true로 변경된 interrupted 상태를 false 상태로 바꿔야 다음 interrupt 상황에서 호출 되었는지 true로 변경하여 알 수 있다.
- 예제
class practice extends Thread {
public void run(){
...
while(download && !isInterrupted()){
...
}
System.out.println("다운로드가 끝났습니다.");
}
}