1、栈封闭
在栈封闭中,只能通过局部变量才能访问对象。
所谓栈封闭就是把变量的声明以及应用都局限在一个局部线程中,在这个局部线程中声明和实例化的对象对于线程外部是不可见的,这个局部线程的栈,无法被任何其他线程访问。
2、不变性
不可变对象一定是线程安全的
3、安全发布的常用模式
要安全发布一个对象,对象的引用以及对象的状态必须同时对其他线程可见。
1、在静态初始化函数中初始化一个对象的引用
2、将对象的引用保存到volatitle类型的域或者AtomicReferance对象中
3、将对象的引用保存到某个正确构造对象的final类型域中。
4、将对象的引用保存到一个由锁保护的域中。