원칙적으로는 어떤 언어로 쓰레드를 띄우든 join은 반드시 하는것이 좋습니다.
하지만 프로세스 실행 종료전에 해당 쓰레드가 종료되는것이 확실히 보장된다면 join을 안해도 문제가 되지는 않습니다.
c#의 경우 Thread의 IsBackground=true 로 설정하면 해당 쓰레드가 돌고있어도 프로세스 종료시 같이 종료가 되기는 합니다.
저같은 경우 c++ 개발하면서 버릇이 되어있어서 c#으로 쓰레드 돌릴때도 반드시 join은 합니다.
질문에 대해 도움이 되었는지 모르겠네요.