미해결
자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]
ExecutorService API - 스레드 풀 중단 및 종료 - 2 강의 내 질문
안녕하세여, 해당 강의 내 10:10초 ~ 11:07초 에 해당하는 부분 질문입니다.질문의 요점은 쓰레드 내의 wait, sleep과 같은 interruptExeception이 발생할 수 있는 코드가 없을 때에 해당 쓰레드를 작동시키는 ExecutorService가 shutdownNow() 되었을 때의 이야기입니다.해당 강의 부분에서는 awaitTermination(1, TimeUnit.SECOND)로 메인 쓰레드에서 1초의 시간을 주고 1초의 시간 안에 ExecutorService가 종료되지 않는다면, showdownNow() api를 호출하여 강제종료시키고 있습니다.강의 내에서 하위 쓰레드에 sleep 메서드를 제거하고 이 동작을 수행되었을 때, 강제종료되어도 interrupt와 관련한 wait, sleep이 없기 때문에 작업이 계속 진행된다, 라고 말씀하셨지만 예제 내에서 출력을 확인해보니 timeout이 발생하는 1초의 시간 내에 5개의 쓰레드는 각자의 작업을 이미 끝내어(sleep이 없기때문에) 종료가 정상적으로 일어났고, 그로인해 "쓰레드 풀 강제 종료 수행" 이라는 문구가 출력되지 않았음을 볼 수 있습니다.즉 강의에서 설명해준 것과 달리, 강제종료되었으나, 하위 쓰레드가 interrupt와 관련한 메서드가 없어 정상 실행된것이 아닌, timeout이 발생하기 전에 하위 쓰레드의 모든 동작이 실행되었다고 판단하고 있습니다. 해당 부분이 맞는지 문의드립니다.질문과는 별개로, 상세한 설명과 좋은 도식도로 내용이 잘 이해되게 해주셔서 정말 감사드립니다.