새 스레드에서 실행할 클로저를 등록합니다.
threads
스레드 생성에서 join까지의 안전 흐름
러스트의 thread::spawn은 새 실행 흐름을 만들지만, move 클로저와 JoinHandle을 통해 캡처한 값의 소유권과 종료 시점을 명확히 다룹니다.
스레드가 참조보다 소유한 값을 갖게 해 수명 문제를 피합니다.
join을 호출해 스레드 종료와 결과를 기다릴 수 있습니다.
실행 순서는 운영체제 스케줄링에 따라 달라질 수 있어 출력 순서를 가정하면 안 됩니다.