JAVA 对象安全的发布,防止多线程造成数据不一致

   为了安全的创建对象,做的以下几点可以成功的将对象发布。

1、通过静态初始化器初始化对象的引用

2、将引用存储到volatile域或AtomicReference

3、将引用存储到正确创建的对象的final域中

4、将引用存储到由锁正确保护的域中

 

   最简单的线程安全的对象发布,采用的是通过静态方法创建,类似于工程方法:

   public static Holder hold=new Holder(42);

 

   对于安全发布对象的总结:

1、如果对象范围是在thread范围中,那么不需要同步机制,因为该对象是thread独有的

2、如果对象是只读的,那么也不需要同步机制,没有任何修改操作

3、如果对象是在Thread-safe结构中进行共享,如Hashtable等,那么该结构已经提供了同步机制,可以放心使用

4、其它。则该对象如果存在读写操作,需要相应的进行锁机制,公用同样的锁来保证数据的完整一致

posted on 2011-11-03 13:48  萌@宇  阅读(674)  评论(0)    收藏  举报

导航