dsc-sookmyung / 2023-01-Effective-Java-Study

이펙티브 자바 공부하는 스터디입니다
2 stars 3 forks source link

Item 82. 스레드 안전성 수준을 문서화하라 #83

Open yejin9858 opened 1 year ago

yejin9858 commented 1 year ago

한 메서드를 여러 스레드가 동시에 호출할 때,

“메서드가 어떻게 동작하느냐” → 해당 클래스 - 이를 사용하는 클라이언트 사이의 중요한 계약

API 문서에서 아무런 언급이 없으면 그 클래스 사용자는 나름의 가정을 해야만 한다.

만약 그 가정이 틀리면 ,

-> 클라이언트 프로그램은 동기화를 충분히 못했음(Item 78) or 지나치게 함(Item 79)

⇒ 심각한 오류

다수의 스레드가 같은 자원에 접근하고 이 자원에 쓰기 작업을 수행할 때 경합 조건이 발생하는데, 쓰레드들이 어떤 객체의 상태를 변경할 수 없도록 함으로써 이 객체에게 불변성을 부여할 수 있고 이럴 때 이 객체는 쓰레드 안전하다

“API 문서에 synchronized 한정자가 보이는 메서드는 스레드 안전하다”는 틀린 문장이다.