Java多线程 发布private对象逸出的演示
文章目录
- 发布逸出
发布逸出
什么是发布: 把这个对象, 给别的类去使用. (作为参数传递, 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<String,String> states ;public ReleaseEscapeDemo() {states = new HashMap<>();states.put("1","a");states.put("2","b");states.put("3","c");}//对象逸出 返回了一个私有变量public Map<String, String> getStates() {return states;}public static void main(String[] args) {ReleaseEscapeDemo re = new ReleaseEscapeDemo();Map<String, String> states = re.getStates();System.out.println(states.get("1"));states.remove("1");System.out.println(states.get("1"));}
}
运行程序后, 控制台打印如下, 说明了成功的获得了值, 并且把map中的值给移除了. 这就是private对象逸出.
会导致其他代码原本要获得key为a的值, 结果却获得不到了
Java多线程 发布private对象逸出的演示相关推荐
- Java多线程 解决private对象逸出--返回副本
文章目录 解决private对象逸出--返回副本 解决private对象逸出–返回副本 如下的代码, 使用的是返回对象的副本的方式, 来解决private对象逸出 package com.thread ...
- Java内存模型:线程并发下的对象逸出
Java内存模型:线程并发下的对象逸出原因分析及解决方案:
- Java并发编程——this引用逸出(this Escape)
http://blog.csdn.net/flysqrlboy/article/details/10607295 并发编程实践中,this引用逃逸("this"esca ...
- java火箭应用_从火箭发场景来学习Java多线程并发闭锁对象
原标题:从火箭发场景来学习Java多线程并发闭锁对象 从火箭发场景来学习Java多线程并发闭锁对象 倒计时器场景 在我们开发过程中,有时候会使用到倒计时计数器.最简单的是:int size = 5; ...
- java 闭锁_从火箭发场景来学习Java多线程并发闭锁对象
从火箭发场景来学习Java多线程并发闭锁对象 倒计时器场景 在我们开发过程中,有时候会使用到倒计时计数器.最简单的是:int size = 5; 执行后,size-这种方式来实现.但是在多线程并发的情 ...
- java多线程访问beans对象_springboot在多线程中注入对象
springboot多线程,线程类无法实现自动注入需要的bean,可以通过工具类获取需要的bean @Component public class ApplicationContextProvider ...
- java多线程同步synchronized——对象监视器
1.synchronized关键字的作用域有二种: 1)是某个对象实例内,synchronized aMethod(){}可以防止多个线程同时访问这个对象的synchronized方法(如果一个对象有 ...
- java多线程发布订阅,多线程实现发布订阅升级版---遗留问题
昨天晚上遗留的两个问题 1.两个消费者消费消息都到100了,但是下图中的日志未打印出来 这个问题看代码 public classConsumerObjectOne implementsRunnable ...
- 对象的创建、发布、逸出
对象创建.发布 对象的创建,许多新手也都耳熟能详了,例如 public class School {private static Person person = new Person(); } 但是因 ...
最新文章
- pycharm 运行控制台中文乱码解决办法
- 我对CTO的理解 CTO要有技术魅力
- 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面
- 弹性均质圆环法计算过程_蚝油的加工工艺,蚝油总固形物(水分含量)计算公式,检测方法...
- android 模糊查询搜索框_彻底搞懂 iOS 和 Android 的设计差异
- 昨天521表白失败,我想用Python分析一下...表白记录和聊天记录
- 有关 google analytics
- nosuiteable Oracle,快给你的Kubernetes集群建一个只读账户(防止高管。。。后)
- 【java笔记】Collections集合工具类
- 研究多个基因间相互作用的频域方法
- python装b代码_教你装逼了:怎么样发布你的 Python 代码给别人 “pip install”
- 最简单DIY基于Android系统的万能蓝牙设备智能遥控器
- DW个人网站制作成品 简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码
- html历史记录代码,js 实现浏览历史记录示例
- Windows下MongoDB数据库基本使用
- 使用R语言进行perMANVOA分析NMDS结果多个分组之间显著性
- 【算法】3 由招聘问题看随机算法
- 怎么让win10隐藏任务栏不会在程序有消息时自动弹出
- 西电工作笔记(部分)【10000字】【原创】
- 数据库增量备份 - DB INCR DB FULL