采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
第二个例子Escape.java中, 看的不是太懂
在6分37秒中说的"包含了对封装实例它隐含的引用",这句话没有听明白
还有就是"造成this引用的溢出"
可能这一章节没有了错误的演示, 所以好像听的不太懂
你好,先来看一个实际的例子。
逃逸主要分析对象动态作用域,当一个对象在方法中被定义后,它可能被外部方法所引用,例如作为调用参数传递到其他地方中,称为方法逃逸。
例如:
public static StringBuffer craeteStringBuffer(String s1, String s2) {
StringBuffer sb = new StringBuffer();
sb.append(s1);
sb.append(s2);
return sb;
}
StringBuffer sb是一个方法内部变量,上述代码中直接将sb返回,这样这个StringBuffer有可能被其他方法所改变,这样它的作用域就不只是在方法内部,虽然它是一个局部变量,称其逃逸到了方法外部。
甚至还有可能被外部线程访问到,譬如赋值给类变量或可以在其他线程中访问的实例变量,称为线程逃逸。
上述代码如果想要StringBuffer sb不逃出方法,可以这样写:
public static String createStringBuffer(String s1, String s2) {
return sb.toString();
不直接返回 StringBuffer,那么StringBuffer将不会逃逸出方法。
在明确了什么是逃逸后,this引用逸出就容易理解了,他主要指一个类发布出去时this引用也被发布出去了,不过这种代码需要在特别复杂的构造过程中才可能出现
非常感谢!
非常感谢!这个逃逸分析一直只有概念,没有准确的认识,老师举的这个例子让我一下就明白了
哈哈,让大家把这种问题提到问答区的好处就在这里,不懂的地方记得多问哦~
登录后可查看更多问答,登录/注册
构建完整并发与高并发知识体系,倍增高薪面试成功率!
1.8k 1
1.2k 18
1.3k 15
3.7k 12
1.3k 12
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号