Java多线程 发布private对象逸出的演示
发布日期:2021-06-30 13:12:05 浏览次数:2 分类:技术文章

本文共 1205 字,大约阅读时间需要 4 分钟。

文章目录

发布逸出

什么是发布: 把这个对象, 给别的类去使用. (作为参数传递, 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的值, 结果却获得不到了

转载地址:https://javaweixin6.blog.csdn.net/article/details/108333311 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java多线程 对象未完成初始化就把对象提供给外界--this赋值
下一篇:Java多线程 演示死锁的发生

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月14日 05时33分23秒