1. 상태가 바뀔 수 있다!
  2. 변경 가능한 값이 아닌 변수는 모두 final로 선언하자
  3. 불변(Immutable) 객체는 항상 그 자체로 스레드 안전하다.
  4. 캡슐화하면 복잡도를 손쉽게 제어할 수 있다.
  5. 변경 가능한 객체는 항상 락으로 보호해야 한다.
  6. 복잡 연산 처리는 항상 락을 확보하고 있어야 한다.
  7. 여러 스레드 변경 가능한 변수를 바라보고 있으면서 적절히 동기화 하지 않으면 올바른 결과를 내놓지 못한다.
  8. 설계단계부터 스레드 안전성을 고려해야 한다.
  9. 동기화 정책에 대한 문서를 남겨야 한다.