여러 Thread를 시작하고 회수하는 loop 배치

병렬성을 유지하면서 모든 완료를 기다리는 구조를 선택한다.

구조실행 모양결과
start 후 즉시 join 반복한 작업씩 끝난 뒤 다음 시작직렬화
start 전체 후 join 전체worker가 함께 진척동시 실행
join 생략main이 초기값을 읽을 수 있음잘못된 결과

핵심: worker exception도 필요하면 Thread join을 넘어 결과 channel을 추가한다.