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