listener 상태를 확인해 예상된 종료와 실제 장애를 구분한다.
listener 열림
새 연결을 기다린다.
다른 스레드가 close
블로킹이 해제된다.
accept 반환 실패
isClosed를 확인한다.
닫힘이면 종료
열림이면 장애 전파
핵심: 모든 accept IOException을 정상 종료로 삼키면 리스너 장애를 놓친다.