← 질문 목록
#68깊이 0

상태 변경을 막으면 동시성에서 무엇을 얻는가?

언어 · 런타임기초동시성

생성 뒤 상태가 변하지 않으면 여러 스레드가 잠금 없이 공유하기 쉽다. 해시 키도 안정된다. 대신 변경마다 새 객체가 필요하다.

기준불변 객체가변 객체
공유동기화 부담이 작다경쟁을 제어해야 한다
변경새 객체를 만든다제자리에서 바꾼다

필드를 private final로 두는 것만으로는 부족하다. 생성자에서 가변 인자를 복사하고 내부 배열과 컬렉션도 방어적 복사로 반환해야 한다.

final 필드는 생성자 종료 뒤 초기화 안전성을 제공한다. 단, 생성 중 this가 외부로 노출되면 이 보장이 깨질 수 있다.

작은 값 객체에는 잘 맞는다. 큰 그래프를 자주 갱신하면 할당과 복사 비용이 커져 빌더나 구조 공유 컬렉션이 필요할 수 있다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

상태 변경을 막으면 동시성에서 무엇을 얻는가?