zoukankan      html  css  js  c++  java
  • 对象组合

        安全组件组合模式,是一个类更容易成为线程安全的,并且在维护过程中不会无意中破坏类的安全性保证。

     1设计线程安全的类

      设计线程安全类 包含的三要素

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

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

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

      关键词:  对象状态      不变性条件      并发访问管理策略
        

      1.1  收集同步需求

        1.确保不变性条件 不会在并发访问的情况下被破坏(counter 封装   复合操作)

        2.后验条件判断判断状态迁移是否有效

        3.实现后验条件和不变性条件的约束,需要额外的同步与封装

      1.2 依赖状态操作

        先验条件

        例子:队列为空不能删除  

        并发,先验条件可能为真

      1.3  状态所有权
        并发访问一个对象时避免产生相互干扰:  线程安全对象,事实不可变对象,有锁来保护的对象

      2.实例封闭

        对象不是线程安全的,你可以确保该对象只能由单个线程访问,或者通过一个锁来保护对该对象的所有访问。

      封闭在类的一个实例(作为一个私有成员)

      封闭在某个作用域(作为一个成员变量)

      

       

      Person类如果是可变的,需要额外的同步。
        

      2.1 Java监视器模式

        一种约定:对于任何一种锁对象,只要自始至终都使用该锁对象,都可以用来保护对象的状态。

        

        2.2 车辆追踪示例

     3.线程安全性的委托

        

      多个线程安全的组件组合成的一个类,是线程安全的么?

      3.1车辆追踪器

       

      

      

     3.2  独立状态变量

       变量之间不存在不可变条件

  • 相关阅读:
    json dump dumps load loads
    python tip: 格式化 深浅copy sorted
    转载整理
    python 计算器练习
    实验5 OSPF虚连接和验证配置
    实验4 OSPF的特殊区域STUB和NSSA
    实验3ospf路由聚合
    实验2 OSPF基本配置
    实验1静态ECMP的浮动静态路由配置
    补充实验6:tftp
  • 原文地址:https://www.cnblogs.com/maxm/p/10880035.html
Copyright © 2011-2022 走看看