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

  1. 可变状态

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

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

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

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

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

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

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

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

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

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

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

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

  12. 文档化同步策略