小凉

3 0642700 3 0642770 5 34202 13942 4314 0624

并发编程初探-对象的组合

对象的组合

  一、设计线程安全的类

   1.在设计线程安全类的过程中,需要包括以下三个基本要素:

     1)找出构成对象状态的所有变量

     2)找出约束状态变量的不变性条件

     3)建立对象状态的并发访问管理策略

   2.收集同步需求

     要确保类的线程安全性,就需要确保它的不变性条件不会再并发访问的情况下被破坏,这就需要对其状态进行推断。

     对象与变量都有一个状态空间,即所有可能的取值,状态空间越小,就越容易判断线程的状态。

     如果不了解对象的不变性条件和后验条件,那么久不能确保线程安全性。要满足在状态量的有效值或状态转换上的各种条件,就需要借助于原子性与封装性。

   3.依赖状态的操作

     如果在某个操作中包含基于状态的先验条件,那么这个操作就称为依赖状态的操作。

  二、实例封闭

   1.封装简化了线程安全类的实现过程,它提供了一种实例封闭机制,通常也简称为“封闭”。

   2.将数据封装在对象内部,可以将数据的访问限制在对象的方法上,从而更容易确保线程在访问数据是总能持有正确的锁。

   3.封闭机制更易于构造线程安全类,因为当封闭类的状态变化时,在分析类的线程安全性时就无须检查整个程序。

   4.Java监视器模式

    从线程封闭原则及其逻辑推论可以得出Java监视器模式。遵循Java监视器模式的对象会把对象的所有可变状态都封装起来,并且由对象自己的内置锁来保护。

  三、线程安全性的委托

     如果一个状态变量时线程安全的,并且没有任何不变性条件来约束它的值,在变量的操作上也不存在任何允许的状态转换,那么久可以安全的发布这个变量。

 

posted on 2016-04-14 23:52  小凉  阅读(313)  评论(0编辑  收藏  举报

导航