1、所有并发问题都归结于如何协调访问并发状态,可变状态越少,保证线程安全就是越容易。
2、尽量将域声明为final类型,除非它们的需要是可变的。
3、不可变对象天生是线程安全的。
4、封装使管理复杂度变得更加可行。
5、用锁来守护每个可变变量。
6、对同一不变约束中的所有变量都使用相同的锁。
7、在运行复合操作期间持有锁。
8、在非同步的多线程情况下,访问可变变量的程序是存在隐患的。
9、不要依赖于可以需要同步的小聪明。
10、在设计过程中就考虑线程安全,或者在文档中明确地说明它不是线程安全的
11、文档化你的同步策略。