发布线程安全的对象

一。总

发布对象:使对象能在当前作用域之外的代码中使用。既将对象的引用传递到其他类的变量和方法。

(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);
    }
}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。