“发布”一个对象的意思是指,使对象能够在当前作用域之外的代码中使用。当某个不应该发布的对象被发布时,这种情况就背称为“逸出”。发布对象的最简单的方法是将对象的引用保存到一个公有的静态变量中,以便任何类和线程都能看见该对象。例如:
public static <Secret> knownSecrets;
public void initialize(){
knownSecrets = new HashSet<Secret>();
}
当发布某个对象时,可能会间接地发布其他对象,在该对象的非私有域中引用的所有对象同样会被发布。
public class ThisEscape{
public ThisEscape(EventSource source){
new EventListener(){
public void onEvent(Event e){
doSomething(e);
}
}
}
}
在ThisEscape中给出的一个特殊示例,即this引用在构造函数中逸出。在构造过程中使this引用逸出的一个常见错误是,在构造函数中启动一个线程。当对象在其构造航书中创建一个线程时,,this引用都会被新创建的线程共享。在对象尚未完全构造之前,新的线程就可以看见他。在构造函数中创建线程没有错误,但最好不要立即启动它,而是通过一个start或者initialize方法来启动。
public class SafeListener {
private final EventListener listener;
private SafeListener(){
listener = new EventListener(){
public void onEvent(Event e){
doSomething(e);
}
};
}//end safeListener();
public static SafeListener newInstance(EventSource source){
SafeListener safe = new SafeListener();
source.registerListener(safe.listener);
return safe;
}//end newInstance()
}
分享到:
相关推荐
62-Java并发编程实战62-Java并发编程实战62-Java并发编程实战62-Java并发编程实战62-Java并发编程实战62-Java并发编程实战62-Java并发编程实战62-Java并发编程实战62-Java并发编程实战62-Java并发编程实战62-Java...
Java并发编程---synchronized关键
java并发编程阿里巴巴-梁飞Dubbo作者.pptx,java并发编程阿里巴巴-梁飞Dubbo作者.pptx
Java并发编程---Thread类!!
Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中...
Java并发编程实践--电子书.rarJava并发编程实践--电子书.rar
Java并发编程实践-电子书-01章.pdf Java并发编程实践-电子书-02章.pdf Java并发编程实践-电子书-03章.pdf Java并发编程实践-电子书-04章.pdf Java并发编程实践-电子书-05章.pdf Java并发编程实践-电子书-06章.pdf ...
JAVA并发编程实践-中文-高清-带书签-完整版(Doug+Lea)JAVA并发编程实践-中文-高清-带书签-完整版(Doug+Lea)
《java并发编程实战》读书笔记-第3章-对象的共享,脑图形式,使用xmind8制作 包括可见性、发布与逸出、线程封闭、不可变性、安全发布等内容
JAVA并发编程实践JavaConcurrencyinPractice-中文-高清-带书签-完整版Doug Lea 等著
JAVA并发编程实践JavaConcurrencyinPractie-中文-高清-带书签-完整版(Doug Lea)
3.2 发布与逸出 3.3 线程封闭 3.3.1 Ad-hoc线程封闭 3.3.2 栈封闭 3.3.3 ThreadLocal类 3.4 不变性 3.4.1 Final域 3.4.2 示例:使用Volatile类型来发布不可变对象 3.5 安全发布 3.5.1 不正确的发布:正确...
Java并发编程与高并发解决方案笔记-基础篇.docx
Java并发编程系列- volatile;Java并发编程系列- volatile;Java并发编程系列- volatile;Java并发编程系列- volatile;Java并发编程系列- volatile;
( Java并发程序设计教程.zip )高清版 PDF 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
Java并发编程实践-电子书-03章
Java并发编程实践-电子书1-9章pdf。