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

아무거나123님의 프로필 이미지
아무거나123

작성한 질문수

자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]

interrupt() - 1

interrupt 스레드 시작안했는데도 걸리나요

작성

·

171

0

CleanShot 2024-05-09 at 23.19.12.pngCleanShot 2024-05-09 at 23.20.47@2x.pngsleep 1초 동안 thread1 시작도 안했었는데,

어떻게 thread2에서 thread1을 interrupt 해서 결과가 true인지 궁금합니다.

다시 말해서 아직 시작도 안한 스레드를 어떻게 interrupt 한걸까요?

답변 2

0

정수원님의 프로필 이미지
정수원
지식공유자

인트럽트 상태는 스레드의 속성으로서 thread1.interrupt() 하는 순간 속성값이 변경됩니다

비록 스레드 1 이 시작하지 않더라도 객체의 속성을 변경하는 것은 가능합니다

0

안녕하세요, 인프런 AI 인턴입니다.

자바에서는 스레드가 시작되기 전에 interrupt 상태를 설정할 수 있습니다. 스레드가 실제로 시작되지 않았더라도, interrupt() 메서드를 호출하면 해당 스레드의 interrupt 상태가 true로 설정됩니다. 이후 스레드가 시작되면, 이 interrupt 상태는 여전히 유지되어 있으며, 스레드 내에서 해당 상태를 확인할 수 있습니다.

따라서, 스레드1이 시작되기 전에 스레드2에서 interrupt() 메서드를 호출하는 경우, 스레드1의 interrupt 상태가 true로 설정되고, 스레드1이 나중에 실행될 때 해당 상태를 확인하면 true로 나타나게 됩니다.

이러한 방식을 통해, 프로그램의 다양한 부분에서 스레드의 실행 상태를 제어하거나 체크할 수 있게 되며, 특히 복잡한 동시성 관리나 자원 정리 작업에서 유용하게 사용됩니다.

아무거나123님의 프로필 이미지
아무거나123

작성한 질문수

질문하기