码迷,mamicode.com
首页 > 其他好文 > 详细

如何安全的发布对象

时间:2015-11-04 19:15:22      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

对象的发布:使对象能够在当前作用域之外的代码中使用

如何安全的发布对象?

1:可变对象比如通过加锁的方式发布

2:不可变对象可以随意的被发布

 

 

可变对象必须通过安全的方式发布,这意味着发布和使用该对象的线程都必须使用同步.

要安全的发布对象,对象的状态和对象的引用必须对其他的线程可见,常见的做法有:

1:在静态初始化函数中初始化一个对象引用

2:将对象的引用保存到volatile类型域中

3:将对象的引用保存到正确构造对象的final域中

4:将对象的引用保存到一个由锁保护的域中

5:使用线程安全的容器

6:使用静态构造的对象,最简单和最安全的方式是使用静态初始化器.

  public static Holder holer = new Holder(23);

  原因是静态初始化器是由jvm在类的初始化阶段执行的,由于jvm内部存在同步机制,因此可以通过这种方式初始化的任何对象都可以被安全的发布.

 

如何安全的发布对象

标签:

原文地址:http://www.cnblogs.com/luochuanghero/p/4936683.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!