发布与逸出

1.publish一个对象,是指使对象能够在当前作用域之外的代码中使用。例如:将一个对象的引用保存到其他代码可以访问的地方。

public static Set<Secret> knowSecrets;

public void initialize() {
    konwSecrets = new HashSet<Secret>();
}

此时,如果将一个Secret对象添加到konwSecrets中,则表示发布了konwSecrets这个对象。

  • 如果从非私有的方法中返回一个引用,那么同样会发布返回的对象。例如:             

class UnsafeStates {
    private String[] states = new String[]{"test1","test2"};

    public Stirng[] getStates() {
        return states;//这里发布了states这个对象
    }
}

此时,UnsafeStates类并不是线程安全的,因为states这个对象被发布了,已经发布出去的东西,就由不得UnsafeStates类来控制了,这就出现的对象逸出问题,这个逸是逃逸的逸,意思是逃出了states的作用域。举个例子:比如你的csdn密码,别人非法获得了,然后贴到某个论坛上,这时,你的密码就逸出了,它被别人拿来做什么,完全不受你控制了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值