• 对象组合


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

     1设计线程安全的类

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

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

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

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

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

      1.1  收集同步需求

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

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

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

      1.2 依赖状态操作

        先验条件

        例子:队列为空不能删除  

        并发,先验条件可能为真

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

      2.实例封闭

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

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

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

      

       

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

      2.1 Java监视器模式

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

        

        2.2 车辆追踪示例

     3.线程安全性的委托

        

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

      3.1车辆追踪器

       

      

      

     3.2  独立状态变量

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

  • 相关阅读:
    在Html中使用echarts图表
    html+css模拟微信对话
    解决React 的<img >src使用require的方式图片显示不出来,展示的是[object Module]的问题
    easygui入门
    python安装easygui
    关于gcc、make和CMake的区别
    FreeRTOS使用心得。
    C/C++整数输出位不足前补0方法
    AngularJS前端分页 + PageHelper后端分页
    AngularJS常见指令
  • 原文地址:https://www.cnblogs.com/maxm/p/10880035.html
Copyright © 2020-2023  润新知