安全发布一个对象有4中常用的模式
1、将一个对象的引用存放在一个静态变量中或者放在静态初始化函数中,存放在static修饰的变量中
2、将对象的引用存放在volatile类型的域或者AtomicReference对象中
3、将对象的引用存放在某个正确构造对象的final变量中(就是将对象的引用存放在final变量域中)
4、将对象的引用用锁来保护,比如将对象的引用存放在安全的集合中(currentHashmap、Hashtable)
5、对于不可变对象,由于其本身就是线程安全的,因此可以用任何一种发布方式进行发布
总结下来就是为了安全的共享对象可以通过以下几种方式:
1、线程封闭
2、只读
3、同步
4、线程安全共享(安全机制在对象内部实现,多个线程可以通过对象的公有接口进行访问)