请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于在方法内部返回对象和get,set方法

1、我在生产中,进经常出现比如在一个方法中new UserEntity个对象实例,来初始化一些值,我参考了您的这个回答:
http://coding.imooc.com/learn/questiondetail/69593.html
(如果你在函数里定义一个变量,正常他的作用范围就只到当前函数结束,而如果你把这个变量当作返回值返回,那个这个变量范围就扩大到其他函数里了。如果你定义一个static类型的变量,那么整个类都可以访问到他,他的作用范围就是整个类了。)

如此以来……岂不是都不安全了,特别是在多个线程持有一个方法所属对象实例的时候!

2、只要是私有成员变量,有get方法应该都会出现安全发布问题吧,只不过单线程的时候没有被影响到

正在回答 回答被采纳积分+3

1回答

提问者 cqnuhy 2021-12-28 21:02:34

就是所有的关于对象安全发布与逃逸都是基于多线程情况下的!单线程一般都不会出问题

0 回复 有任何疑惑可以回复我~
  • 提问者 cqnuhy #1
    比如多个线程持有一个单例,对其共有成员的修改就会出问题!但是后面一节又说单例保持一个对象是安全发布,那么这样对起内部成员来说,成员任然是不安全发布的对吧!感觉就循环了
    回复 有任何疑惑可以回复我~ 2021-12-28 21:13:51
  • Jimin #2
    你好,我们很多时候其实都是在堆栈内发布(在当前线程内完成创建和使用),如果不涉及多线程更新资源是没问题的
    回复 有任何疑惑可以回复我~ 2022-01-04 16:26:47
  • 也就是说UnsafePublish实例只要没有多个线程去调用set方法的场景 就不存在线程安全不安全一说对吗
    回复 有任何疑惑可以回复我~ 2024-02-15 11:38:08
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信