发布与逸出

来源:互联网 发布:微信换群软件 编辑:程序博客网 时间:2024/05/02 00:22

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密码,别人非法获得了,然后贴到某个论坛上,这时,你的密码就逸出了,它被别人拿来做什么,完全不受你控制了~

原创粉丝点击