1. mutable state 는 멍청하다
모든 병렬 접속 문제는 mutable state 에서 나온다 적으면 적을 수로 thread safe 를 달성하기 쉽다.
2. 왠만하면 모두 final 만들어라 꼭 mutable 일 필요 없으면
3. immutable object 는 thread-safe 이다.
immutable object 는 병렬 프로그램의 복잡성을 현저이 낮춰준다. 간단하고 빠르다 그리고 아무런 락킹 또는 카피 없이 공유 될수 있다
4. Encapsulation 은 복잡도를 현실적으로 잘 관리할수 있게 해준다.
전부 글로벌로 쓸 경우 복잡하다 왜 그렇게 하는가? Encapsulation 을 사용해서 11. 그들의 적법성을 유지 시키고 2 동기화 정책을 쉽게 유지 시키자
5. mutable variable 을 락으로 보호하자
6. 하나의 적법성 룰에 참여하는 모든 변수들은 같은 락으로 보호 되어야 한다.
7. compound action 을 할때는 lock 잡고 있자
8. mutable 변수들에게 멀티 쓰레드에서 접근할때 동기화 되어있지 않으면 잘못된 프로그램이다.
9. 동기화 하지 않아도 될꺼야라고 생각해서 동기화를 피해가지 말아라 (왠만하면 걍 동기화해라)
동기화가 필요하다고 생각하는 코드면 동기화해라( 어떤 어떤 이유 때문에 예는 안해도되 라고 하지말아라)
10. 디자인 단계에서 부터 thread - safety 를 생각하고 동기화 관련 문서를 꼭 작성해라
흠.. 섬머리 좋네.. 어째든 재미있다 ㅋㅋ 궁금해 하던 많은 부분을 책에서 얻어 가는듯