print("모든 작업이 완료됨")
if __name__ == "__main__":
main()
➊ 워커 스레드가 큐에서 작업을 하나 꺼내와 작업에 연결된 함수를 실행한다. 실행이 끝나면 작업에 완료 표시를 한다. 이 과정을 반복한다.
➋ 스레드 풀에 맡겨진 작업을 큐에 저장한다.
➌ 워커 스레드를 생성한 다음, 주 스레드가 끝나면 종료되도록 이들을 데몬 모드로 설정한다. 그리고 스레드를 시작해 큐에 들어 있는 작업을 처리하도록 한다.
➍ 워커 스레드가 큐에 담긴 모든 작업을 끝낼 때까지 블록 상태로 대기한다.
➎ 5개의 워커 스레드를 갖는 스레드 풀을 생성한다.
➏ 작업 20개를 스레드 풀에 의뢰한다.
스레드 풀을 생성하면 지정한 수의 스레드와 작업을 의뢰받을 메시지 큐를 만든다. 그리고 주 스레드는 풀에 작업을 의뢰한 다음, 작업이 완료될 때까지 대기한다.