并发诀窍清单-摘自《java并发编程实践》

  1. 可变状态

所有并发问题都归结为如何协调并发状态,可变状态越少,保证线程安全就越容易

  1. 尽量将域声明称final类型,除非他们的需要是可变的。

  2. 不可变对象天生是线程安全的。

  3. 不可变对象极大的减轻了并发编程的压力,他们简单而且安全,可以在没有锁的情况下自由的共享。

  4. 封装使得管理复杂度变得更可行。

在对象中封装数据,使得他们更加容易的保持不变;在对象中封装同步,使他更能够遵循同步规则。

  1. 用锁来守护每一个可变变量

  2. 对同一不变约束中的所有变量都使用相同的锁。

  3. 在运行复合操作期间持有锁。

  4. 在非同步的多线程情况下,访问可变变量额程序是存在隐患的。

  5. 不要依赖于可以需要同步的小聪明。

  6. 在设计过程中就考虑线程安全,或者在文档中明确的说明它不是想成安全的。

  7. 文档化同步策略