美文网首页
第四章 对象的组合(一)

第四章 对象的组合(一)

作者: 伊凡的一天 | 来源:发表于2018-01-12 14:50 被阅读11次

前言:本章将介绍一些组合模式,这些模式能够使一个类更容易设计成线程安全的,并且在维护这些类时不会无意中破坏类的安全性保证。


4.1 设计线程安全的类

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

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

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

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

4.2 实例封闭

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

被封闭对象一定不能够超出它们既定的作用域。对象可以封闭在一个类的实例中(例如作为类的一个私有成员),或者封闭在某个作用域内(例如作为一个局部变量),再或者封闭在一个线程内。

程序清单4-2说明了如何通过封闭和加锁机制使一个类成为线程安全的。

4-2 通过封闭机制来确保线程安全

public class PersonSet{

     private final Set<Person> mySet = new HashSet<>();

     public synchronized void addPerson(Person p){

            mySet.add(p);

     }

     public synchronized boolean containsPerson(Person p){

           return mySet.contains(p);

     }

}

实例封闭是构建线程安全类的一个最简单方式。Java类库中还有很多线程封闭的实例,最典型的是一些将非线程安全的类转化为线程安全类的包装器类。例如(Collections.synchronizedList(List<T> list))。

4.2.1 Java 监视器模式

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

程序清单4-3 通过一个私有锁来保护状态

public class PivateLock{

       private final Object myLock = new Object();

       void someMethod(){

             synchronized(myLock){

             }

        }

}

使用私有的锁对象而不是对象的内置锁有许多优点。私有的锁对象可以将锁对象封装起来,使客户代码无法得到锁,但客户代码可以通过公有方法来访问锁,以便参与到它的同步策略中。

相关文章

  • Java并发编程实战

    竞态条件 第四章 对象的组合 通过各种组合模式让一个类是线程安全的. 设计线程安全的类 步骤: 找出构成对象状态的...

  • 第四章 对象的组合(一)

    前言:本章将介绍一些组合模式,这些模式能够使一个类更容易设计成线程安全的,并且在维护这些类时不会无意中破坏类的安全...

  • 第四章——对象组合

    4.2 实例封闭 4.2.2 示例:车辆追踪 程序清单 4-4 给出了一个基于 Java 监视器模式实现的“车辆追...

  • 组合模式原型解析

    组合模式定义: 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象...

  • 设计模式之组合模式

    组合模式 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用...

  • Java并发编程实战第四章笔记

    第四章 对象的组合 4.1 设计线程安全的类 在设计线程安全类的过程中,需要包含以下三个基本要素: 找出构成对象状...

  • 14、设计模式----组合模式

    组合模式,将对象组合树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一直性。...

  • 大话设计模式(7) --- 组合模式|迭代器模式|单例模式

    1. 组合模式 组合模式,将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象...

  • Java进阶篇设计模式之六 ----- 组合模式和过滤器模式

    组合模式 简介 组合模式是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及...

  • 组合模式(Composite)

    定义组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一...

网友评论

      本文标题:第四章 对象的组合(一)

      本文链接:https://www.haomeiwen.com/subject/hpowqttx.html