Inflearn brand logo image

인프런 커뮤니티 질문&답변

wonderwall09in님의 프로필 이미지
wonderwall09in

작성한 질문수

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

인터럽트 - 시작2

인터럽트 상태에 대하여

작성

·

58

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
안녕하세요, 인터럽트 - 시작 2 강의를 수강하다 궁금한 점이 생겨 여쭤보게 되었습니다.

 

강의 내용 중

'work 스레드는 TIMED_WAITING 상태에서 RUNNABLE 상태로 변경되고 InterruptedException 예외를 처리하면서 반복문을 탈출한다.

work 스레드는 인터럽트 상태가 되었고, 인터럽트 상태이기 때문에 인터럽트 예외가 발생한다.

인터럽트 상태에서 인터럽트 예외가 발생하면 work 스레드는 다시 작동하는 상태가 된다. 따라서 work 스레드의 인터럽트 상태는 종료된다.

work 스레드의 인터럽트 상태는 false로 변경된다.'

 

부분에 대해 여쭤보고 싶습니다.

전반적인 내용은 이해가 되는데, '상태' 라는 표현에 대해 이해가 잘 되질 않습니다.

 

앞 부분 스레드 생명 주기에서 스레드의 상태는

new, runnable, blocked, waiting, timed_waiting, terminated가 있다고 학습했는데, 여기에서 나오는 '인터럽트 상태'는 스레드의 생명 주기에 등장하는 상태와는 독립적으로 봐야하는 상태일까요 ?

 

'인터럽트 상태'가 스레드의 생명 주기에서 등장하는 스레드의 상태 중 하나인지 혼동되어 여쭤봅니다.

 

답변 1

0

안녕하세요. wonderwall09in님, 공식 서포터즈 David입니다.

스레드는 인터럽트에 대한 상태(interrupted 필드)를 가지고 있습니다.

생명주기에 포함되지 않는 별도의 상태입니다.

https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/lang/Thread.java#L232

https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/lang/Thread.java#L1565

감사합니다.

wonderwall09in님의 프로필 이미지
wonderwall09in

작성한 질문수

질문하기