安全的发布对象必须满足以下任一一个条件
通过静态初始化器初始化对象的引用
将它的引用储存到volatile域或AtomicReference
在final定义的域中创建
在由锁保护的域中创建
为什么要安全的发布对象?
有些对象在发布后不需要更改,其他线程可以在没有额外同步的条件下安全的访问他们。访问对象时不需要再去同步。所以安全的发布就变得至关重要。
如:public Map<String,Date> lastLogin = Collections.synchronizedMap(new HashMap<String,Date>());