join은 종료를 회수하고 detach는 회수를 포기하므로 수명 주기 책임이 달라집니다.
스레드 프로그래밍 안전 점검 기준
스레드 코드는 생성보다 종료, 예외, 공유 상태, 풀 크기를 통제할 때 안정적으로 운영됩니다.
01생성
02작업 제출
03공유 상태
04종료 대기
05예외 처리
프로그램 종료 시 강제로 끊길 수 있어 파일 쓰기나 트랜잭션 작업에는 위험합니다.
작업마다 스레드를 만들지 않고 큐와 worker 수로 생성 비용과 폭주를 제어합니다.
공유 데이터는 lock, queue, 불변 객체 중 하나로 소유권과 접근 순서를 명확히 해야 합니다.