sleep과 join은 기다리는 종료 조건이 다르다

시간 지연은 다른 thread 완료를 증명하지 않으며 환경이 느리면 sleep 뒤에도 작업이 남을 수 있습니다.

sleep(100)

시간 만료만 기다림 · 대상 작업 무관

worker.join()

대상 TERMINATED까지 대기

join(timeout)

시간 또는 완료 · 상태 재확인

핵심: 완료를 기다릴 때는 대상 thread를 명시하는 join을 사용합니다.