JAVA이야기

java thread 내생각

НooпeУ 2011. 11. 3. 15:40
java thread 의 interrupted
자바의 interrupt를 스레드에게 보내는 신호로 해석하면 쉽다. OS랑 약간다름.
OS는 interrupt 걸리면, 해당 프로세스를 종료하고, interrupt 핸들러를 수행하고 다시 돌아온다.

2가지로 나뉜다.
1.실행될 때
 - 실행될 때 인터럽트 신호가 걸리면 이를 무시한다.
 - 이를 확인하려면? isInterrupted()메소드를 사용한다.

2. 대기큐에 있을 때
 - 대기큐에 있을 때 인터럽트 신호가 걸리면 실행큐로 들어간다.
 - 실행이 될 땐, InterruptException catch 블록으로 들어가 수행하게 된다.
    이 때, isInterrupted의 상태는 false이다. 왜냐하면 이미 신호가 지나가고 난 후에 메소드를 호출했기 때문이다.

main(){
thread.join();
}
main 스레드는 thread와 같은 생명 주기를 가진다. 따라서 thread가 종료될 때까지 기다린다.

yield()
 자기를 대기상태로 전이 시킨다. 만약 실행될 프로세스가 없으면 자신을 실행시킨다.