并发诀窍清单-摘自《java并发编程实践》
-
可变状态
所有并发问题都归结为如何协调并发状态,可变状态越少,保证线程安全就越容易
-
尽量将域声明称
final
类型,除非他们的需要是可变的。 -
不可变对象天生是线程安全的。
-
不可变对象极大的减轻了并发编程的压力,他们简单而且安全,可以在没有锁的情况下自由的共享。
-
封装使得管理复杂度变得更可行。
在对象中封装数据,使得他们更加容易的保持不变;在对象中封装同步,使他更能够遵循同步规则。
-
用锁来守护每一个可变变量
-
对同一不变约束中的所有变量都使用相同的锁。
-
在运行复合操作期间持有锁。
-
在非同步的多线程情况下,访问可变变量额程序是存在隐患的。
-
不要依赖于可以需要同步的小聪明。
-
在设计过程中就考虑线程安全,或者在文档中明确的说明它不是想成安全的。
-
文档化同步策略