- 상태가 바뀔 수 있다!
- 병렬성과 관련된 대부분의 문제는 변경 가능한 변수에 접근하려는 시도에서 발생한다.
- 따라서 상태가 바뀌는 로직은 유심히 살펴봐야한다.
- 변경 가능한 값이 아닌 변수는 모두 final로 선언하자
- 불변(Immutable) 객체는 항상 그 자체로 스레드 안전하다.
- 캡슐화하면 복잡도를 손쉽게 제어할 수 있다.
- 캡슐화하면 동기과 정책을 손쉽게 적용 할 수 있다.
- 변경 가능한 객체는 항상 락으로 보호해야 한다.
- 복잡 연산 처리는 항상 락을 확보하고 있어야 한다.
- 여러 스레드 변경 가능한 변수를 바라보고 있으면서 적절히 동기화 하지 않으면 올바른 결과를 내놓지 못한다.
- 설계단계부터 스레드 안전성을 고려해야 한다.
- 동기화 정책에 대한 문서를 남겨야 한다.