您当前的位置: 首页 >  Java

java持续实践

暂无认证

  • 1浏览

    0关注

    746博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java多线程 发布private对象逸出的演示

java持续实践 发布时间:2020-09-01 08:08:22 ,浏览量:1

文章目录
      • 发布逸出

发布逸出

什么是发布: 把这个对象, 给别的类去使用. (作为参数传递, return对象等情况. ) 对象逸出: 对象发布到了不该发布的地方. 如下的情况都是逸出 如下的代码演示了发布逸出的情况 ,定义了一个private对象, 并且用一个public的方法getStates去返回该对象. 在ReleaseEscapeDemo的构造方法中, 给这个map赋初始化的值. 这样的值,在生产环境中 , 可能是一些配置的信息 ,是要提供给其他很多的业务代码去使用的 . 原则上是不允许修改的, 但是在main方法中, 尝试去获得map , 并且去remove掉一个元素.

package com.thread.background;

import java.util.HashMap;
import java.util.Map;

/**
 * 类名称:ReleaseEscapeDemo
 * 类描述:  发布逸出的演示
 *
 * @author: https://javaweixin6.blog.csdn.net/
 * 创建时间:2020/9/1 7:52
 * Version 1.0
 */
public class ReleaseEscapeDemo {
    //定义一个private私有变量
    private Map states ;

    public ReleaseEscapeDemo() {
        states = new HashMap();
        states.put("1","a");
        states.put("2","b");
        states.put("3","c");

    }

    //对象逸出  返回了一个私有变量
    public Map getStates() {
        return states;
    }

    public static void main(String[] args) {
        ReleaseEscapeDemo re = new ReleaseEscapeDemo();
        Map states = re.getStates();

        System.out.println(states.get("1"));

        states.remove("1");
        System.out.println(states.get("1"));
    }
}

运行程序后, 控制台打印如下, 说明了成功的获得了值, 并且把map中的值给移除了. 这就是private对象逸出. 会导致其他代码原本要获得key为a的值, 结果却获得不到了

关注
打赏
1658054974
查看更多评论
立即登录/注册

微信扫码登录

0.0428s