InterruptedExceptionThreadStopExample 질문입니다.
94
작성한 질문수 6
InterruptedExceptionThreadStopExample 를 돌리면 강의 로그에서는
=============
중단 스레드가 작업 스레드를 중단 시켰습니다.
인트럽트 상태 1 : true
=============
형태가 찍히는데 제 로컬에서는
=============
중단 스레드가 작업 스레드를 중단시켰습니다.
인트럽트 상태 2 : false
=============
가 찍히는데 이건 확률적으로 로그가 찍히는 걸까요? 답변 부탁 드립니다!
답변 2
0
인터럽트 상태 1번이 false 가 찍히고 있는데요?
인트럽트가 아직 걸린 상태가 아니기 때문에 false 가 맞습니다
메인 스레드가 1초 후에 워커 스레드를 인터럽트하고 있고 워커스레드는 0.5 초 단위로 반복하기 때문에 첨부터 true 가 나올 수 없습니다
예제 소스를 올려 주시겠어요?
0
안녕하세요, 인프런 AI 인턴입니다. osk2090님.
InterruptedException과 관련된 스레드 실행 순서가 시간이 경과하면서 달라질 수 있습니다. 이 때문에 로컬 환경에서 실행 결과가 강의에서 보여지는 것과 다른 결과를 출력하는 경우가 발생할 수 있습니다. 핵심은 스레드가 중단(interrupt)된 후의 상태와 이 상태를 어떻게 확인하는지에 대한 내용입니다.
기본적으로 스레드를 interrupt하면 해당 스레드의 인터럽트 상태가 true로 설정됩니다. 그러나, InterruptedException이 발생하면 이 상태를 다시 초기화(false)할 수 있습니다. 그로 인해 프로그램의 실행 상황에 따라 인터럽트 상태가 false로 보일 수 있습니다.
스레드의 로그가 다르게 출력되는 이유는 몇 가지가 있을 수 있습니다:
1. 타이밍 문제: 두 스레드 간의 타이밍 차이로 인해 인터럽트 상태가 로그에 반영되기 전에 reset될 수 있습니다.
2. 스레드의 상태 확인: 로그가 찍히는 시점에서 인터럽트 상태를 다시 확인하면서 상태가 초기화되었을 가능성도 배제할 수 없습니다.
3. 환경 차이: 컴퓨터 환경에 따라 스레드의 스케줄링이 달라질 수 있습니다.
관련해서 자세하고 유사한 논의를 다룬 게시물이 있는데 확인해 보시면 도움이 될 것 같습니다:
- 스레드 중지 – flag variable vs interrupt() - 2 강의에서 질문
- ExecutorService API - 스레드 풀 중단 및 종료 - 2 강의 내 질문
이해를 돕기 위해 가능하다면, 코드 상에서 스레드의 인터럽트 상태를 직접 확인하는 추가 로그를 넣어보시면 변화를 파악하는 데 유용할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
멀티스레드 단일스레드
0
56
0
new Condition 부분 질문
0
81
1
13:00 강의 내용 이해 질문
0
99
1
강의 출시 질문 있습니다.
0
114
1
instance.getMyField()의 값이 왜 다른가요?
0
115
1
해당 강의 내용 무단 도용 신고
0
211
2
Thread Waiting 상태 관련 질문 드립니다.
0
182
1
단일연산변수 api
0
125
0
synchronized 블럭과 메인메모리 반영
0
146
0
실무에서 자바가 제공하는 락을 사용하는 경우
1
243
1
뮤텍스나 세마포어는 busy waiting이 없는 게 맞을까요?
0
157
1
16:50부분에서 타입락 질문드립니다.
0
110
2
16분 7초 뮤텍스 코드 관련해 질문드립니다.
0
160
2
동기화가 보장된다고 하더라도 스레드간 데이터 불일치가 발생할 수 있지 않나요??
0
199
2
리액티브-part2
0
180
2
문자열 풀 값을 이용한 String 변수
0
207
2
스레드 라이브러리는 커널과 같은 역할을 하지 못하나요?
0
173
1
자식 프로세스를 쓰는 이유
0
186
1
커널 모드 전환시 질문이 있습니다!
0
146
1
[공유] setName 시 threadName이 1부터 시작하는 이유
0
177
1
synchronized = 모니터
0
285
2
Thread의 Context Switching 문의드립니다.
1
254
1
동기 & 논블록킹 질문 드립니다.
0
231
2
AtomicIntegerGetAndUpdateExample 예시가 부자연스럽습니다.
0
151
1





