发布线程安全的对象
一。总
发布对象:使对象能在当前作用域之外的代码中使用。既将对象的引用传递到其他类的变量和方法。
(1)变量的静态初始化
(2)声明为volatile变量 或 AtomicReferance对象
(3)声明为final变量
(4)将变量保存在线程安全的容器中(既保存在一个由锁保护的域中)
二。分
1.成员变量的初始化:
(1)直接初始化
(2)构造函数初始化
2.在Java内存模型中,final域能确保初始化过程的安全性,从而可以不受限制的访问不可变对象,并在共享这些对象时无需同步。
在可变对象基础上构建的不可变类:虽然Set对象是可变的,但Set对象通过ThreeStooges的构造函数后,无法对其修改。
public final class ThreeStooges { private final Set<String> stooges = new HashSet<String>(); public ThreeStooges(){ stooges.add("A"); stooges.add("B"); stooges.add("C"); } public boolean isStooge(String name){ return stooges.contains(name); } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。