`

并发编程实践笔记——对象的共享之发布与逸出

 
阅读更多

发布 

        对象的发布是指:使对象能够在当前作用域之外的代码中使用。例如在一个非私有的方法中将私有属性的对象引用直接返回。

 

逸出

        是指当某个不该被发布的对象被发布出去。例如,如果在对象完成构造之前就将其发布出去,就会破坏线程安全性。

 

警惕this引用逸出。当从对象的构造函数中发布对象的时候,只是发布了一个未构造完成的对象。在构造过程中使用this引用逸出的一个常见的现象是:在构造函数中启动一个线程,无论是显式创建(将它传递给构造函数)还是隐式创建(由于Thread或者Runable是该对象的一个内部类),this引用都会被新创建的线程共享。对应this应用逸出的方法是,将构造函数声明为私有,同时提供一个工厂方法提供对象,在工厂方法中完成构造并且发布。

 

安全发布的常用模式 

要安全的发布一个对象,对象的引用及对象的状态必须同时对其他线程可见

  • 在静态初始化函数中初始化一个对象的引用(由于静态初始化器由JVM在类的初始化阶段机型,由于JVM内部存在同步机制,因此通过此方式初始化的任何对象都可以被安全的发布)。
  • 将对象的引用保存在volatile类型域或者AtomReference对象中。
  • 将对象的引用保存到某个正确构造对象的final类型域中。
  • 将对象的引用保存到一个由锁保护的域中(比如Vector或者synchronizedList之类的线程安全的容器)。
分享到:
评论

相关推荐

    java并发编程实践笔记

    java并发编程实践笔记java并发编程实践笔记java并发编程实践笔记java并发编程实践笔记

    java并发编程实践笔记资料.pdf

    java并发编程实践笔记资料.pdf

    java并发编程实践高清中文版+源码

    《JAVA并发编程实践》随着多核处理器的普及,使用并发成为构建高性能应用程序的关键。Java 5以及6在开发并发程序中取得了显著的进步,提高了Java虚拟机的性能以及并发类的可伸缩性,并加入了丰富的新并发构建块。在...

    JAVA并发编程实践

    《JAVA并发编程实践》随着多核处理器的普及,使用并发成为构建高性能应用程序的关键。Java 5以及6在开发并发程序中取得了显著的进步,提高了Java虚拟机的性能以及并发类的可伸缩性,并加入了丰富的新并发构建块。在...

    JAVA并发编程实践.pdf

    《JAVA并发编程实践》适合于具有一定Java编程经验的程序员、希望了解Java SE 5以及6在线程技术上的改进和新特性的程序员,以及Java和并发编程的爱好者。 作者简介 作者:(美)戈茨 等 本书作者系lava标准化组织...

    java并发编程实践pdf笔记

    java并发编程实战pdf学习笔记 总结了重要的知识点

    java并发编程实践(第一版)

    java并发编程实践java并发编程实践java并发编程实践java并发编程实践

    java并发编程学习笔记

    java并发编程学习笔记,很详细的资料

    JAVA并发编程实践高清中文带书签

    《JAVA并发编程实践》随着多核处理器的普及,使用并发成为构建高性能应用程序的关键。Java 5以及6在开发并发程序中取得了显著的进步,提高了Java虚拟机的性能以及并发类的可伸缩性,并加入了丰富的新并发构建块。在...

    Java并发编程实践.pdf

    Java并发编程实践.pdf

    《java并发编程实战》读书笔记-第3章-对象的共享

    《java并发编程实战》读书笔记-第3章-对象的共享,脑图形式,使用xmind8制作 包括可见性、发布与逸出、线程封闭、不可变性、安全发布等内容

    Java并发编程学习笔记.rar

    Java并发编程学习笔记

    Java并发编程实践

    Java并发编程实践

    java并发编程实践

    java并发编程实践

    java 并发编程实践

    java 并发编程实践java 并发编程实践java 并发编程实践java 并发编程实践java 并发编程实践

    java并发编程实践(中文版pdf全部40M分2部分上传)2

    《JAVA并发编程实践》既能够成为读者的理论支持,又可以作为构建可靠的、可伸缩的、可维护的并发程序的技术支持。《JAVA并发编程实践》并不仅仅提供并发API的清单及其机制,还提供了设计原则、模式和思想模型,使...

    经典高级并发编程实践

    并发编程模式之Active——Object 并发编程不算难,但是要编写出稳定、可靠的还是有一些难度的,本文就是介绍Active——Object模式的一片经典文章。

    JAVA并发编程实践 .pdf

    《Java并发编程实战》深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册。书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证...

Global site tag (gtag.js) - Google Analytics