一、 不可变对象
1、静态初始化函数中初始化一个对象的引用
public static Holder holder=new Holder(42);
2、将对象的引用保存在volatile类型的域或者AtomicReferance对象中
3、将对象的引用保存在某个正确构造队形的final类型域中。
4、将对象的引用保存到一个由锁保护的域中
二、可变对象
设计线程安全类的三个基本要素:
1、找出构成对象状态的所有变量
2、找出约束状态变量的不变性条件
3、建立对象的并发访问管理策略。