思维导图:
引言:
本文的作用就是归纳以前四篇文章的作用以及他们之间的联系。
总结:
第一篇的内容是线程安全性,这是整个基础部分知识提纲挈领性的纲要。这篇文章中,通过对原子性的分析,我们分别介绍了类在无状态,有唯一状态和多个状态时应该如何保证线程安全性。
特别注意,当类有一个状态时,就有可能发生竞态条件的异常了。但是,在什么样的情况下会发生静态条件在本篇文章中其实并没有说清楚。而《对象的共享》其实就是在深入的描述如何避免竞态条件,即如何安全的发布一个对象。
由于需要安全的发布对象,所以就对可见性进行了介绍。而我们保证安全的手段就是尽量不发布状态,要发布也是发布不可变的,最后实在不行了,才发布可变状态,而且需要使用加锁的手段保证可见性和顺序性。
还记得《线程安全性》中描述过如何在类具有多个状态时保证线程安全性吗?《对象的组合》就是在深入的介绍这部分的具体内容。所以,在第三篇中,我们描述了如何分析类中多个状态的同步要素,即状态和状态的联系。也描述了如何根据不同的情况选择不同的手段去协调多个状态。手段其实和第二篇中发布对象的一样,尽量保守一点。首先考虑实例封闭,不行了以后才考虑加锁协调。一样
《对象的共享》和《对象的组合》的内容中其实都利用了一个非常关键的元素-----已存在的线程安全类。《基础构建模块》则大致的介绍了现有的Java类库中所拥有的线程安全的容器和工具以及简单是使用方法。