timeout과 interrupt가 제어하는 서로 다른 축

호출자 대기 제한과 대상 작업 취소 요청을 구분한다.

Timed join

caller가 기다릴 최대 시간을 제한하고 worker를 건드리지 않는다

observation

Interrupt

worker flag 또는 blocking exception으로 중단을 요청한다

cooperation
안전한 종료timeout 후 요청만 보내지 말고 마지막 join으로 thread를 회수한다

핵심: 외부 결제처럼 취소 불가능한 부작용에는 idempotency와 상태 조회가 별도로 필요하다.