양방향 작업은 둘 중 하나가 끝나면 공통 종료로 합류한다

reader EOF 뒤 writer가 콘솔에서 영원히 기다리거나 writer exit 뒤 reader가 계속 블로킹되면 프로세스가 남습니다.

RUNNINGreader+writer
reader endEOF·IOException
writer end/exit·input end
CLOSINGsocket close once
JOINED두 역할 회수

핵심: 종료 coordinator가 Socket을 한 번 닫아 양쪽 블로킹 지점을 깨웁니다.