제목에 기재된 내용을 정리해본다.
new 키워드로 쓰레드 생성
-> 실행 대기 상태
-> 실행
-> 일시 정지 상태
-> 실행
-> (실행 -> 일시 정지 -> 실행 대기 상태 반복)
-> 종료
sleep()
join()
wait()
interrupt()
notify()
강제로 실행 -> 실행 대기 상태로 전환
실행 중이던 쓰레드를 일시 정지 상태로 전환(Timed_Waiting)
sleep() 메서드는 자신 쓰레드만 관리할 수 있다.
static 메서드이기 때문에 Thread로 호출 가능
Thread.sleep(2000)
sleep() 메서드 활성화 도중 interrupt() 메서드가 호출되면 interruptedException이 발생하므로 예외 핸들링이 필요
try{
Thread.sleep(2000);
}catch(InterruptedException e){
e.printStackTrace();
}
while문으로 예외 발생을 방지 가능
try{
while(!Thread.currentThread().isInterrupted()){
Thread.sleep(2000);
}
}catch(InterruptedException e){
break;
}
System.out.println(Thread.currentThread().getName());
Thread thread = new Thread("task", "Thread");
thread.start();
thread.interrupted();