재사용 state와 실행별 state

같은 distinct 정책도 Set 생성 위치가 결과를 바꾼다.

Predicate field

여러 실행 공유

두 번째 결과 오염

Method local Set

실행마다 새로 생성

입력 내부 distinct

Concurrent Set

data race 감소

reset 문제 남음

Stream.distinct

operation이 state 소유

계약 명확
제약첫 등장 순서를 요구하면 sequential encounter order를 보존한다.

핵심: thread safety와 실행 isolation을 같은 문제로 취급하지 않는다.