[CS/운영체제] 멀티스레드와 동시성 - 40부

황제연·2025년 8월 11일
0

CS학습

목록 보기
163/193
post-thumbnail

close()

close()의 경우 shutdown()을 호출하고 하루를 기다려도 작업이 완료되지 않으면 shutdownNo()를 호출합니다

하지만 하루는 너무 길기 때문에 ExecutorService 공식 API에서는 별도로 시간을 대기하도록
커스텀하게 구현하는 것을 추천합니다

정리

서비스를 종료할 때, 작업중인 스레드에 인터럽트를 호출하는 것은 맞지만
인터럽트를 호출하더라도 여러 가지 이유로 작업에 시간이 걸릴 수 있습니다

따라서 이러한 시간을 기다려주기 위해 별도의 기다리는 시간이 필요하기도 하고,
최악의 경우 인터럽트 예외가 발생하지 않고 스레드가 계속 수행될 수도 있습니다

따라서 기본적으로는 우아한 종료를 선택하고 우아한 종료가 되지 않으면 무한정 기다릴 수는 없으므로
강제 종료를 하는 방식으로 접근하는 것이 좋습니다

참고

  • 김영한의 실전 자바 - 고급 1편
profile
Software Developer

0개의 댓글