站点微信订阅号zhengjinyibu,欢迎大家搜索关注.
实例域 延迟初始化 可以采用 synchronize方法或者 双重校验锁来完成
类实例域 采用 lazy initialization holder class 模式
正常初始化 优先于 延迟初始化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| package book.effectiveJava;
public class _71HadBetterNotLazyInitClass {
private static class Holder{ private static final Target target= new Target(); public static Target getTarget(){ return target; } }
private static class Target{
public InnerTarget instance ;
private Target(){
}
public InnerTarget getTarget(){ if(instance==null){ synchronized (this){ if(instance==null){ instance=new InnerTarget(); } } } return instance; }
public synchronized InnerTarget getTarget2(){ if(instance==null){ instance=new InnerTarget(); } return instance; } private static class InnerTarget{
} }
public static void main(String[] args) { Object obj1 = Holder.getTarget().getTarget(); Object obj2 = Holder.getTarget().getTarget(); System.out.println(obj1==obj2); } }
|
本文内容仅作为作者个人兴趣与观点,不代表所在公司及团队的观点和决策。若有不恰当之处,请联系站长.