zoukankan      html  css  js  c++  java
  • Java并发编程实践之对象的组合

    ---恢复内容开始---

    1 对象组合的目的

      将一些现有的线程安全类组合成更大的组件,也是线程安全的;

      1.1 构造线程安全的类需要考虑:

        构成对象状态的所有变量;

        对象变量的不变性条件(对象的变量都有取值范围,要保证变量的取值都在这个范围内,

        否则,对象的状态就是无效的);

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

      1.2 类的不变性条件和类的后验条件

        不变性条件:变量都有一个取值范围,比如 long count,count的取值范围是Long.MIN_VALUE,Long.MAX_VALUE,

        再加上自己定义的count>=0;故count变量的不变性条件就是count>=0 && count <= Long.MAX_VALUE;

        后验条件:判断对象从一个状态A转到状态B是否是有效的;

      1.3 状态的所有权

        对象封装它拥有的状态,就拥有状态的所有权,也就是能改变状态;如果把这个对象的引用发布出去,那么对象就不是独占状态的所有权了,需要和其他的一起共享状态的所有权;

        

    ---恢复内容结束---

    1 对象组合的目的

      将一些现有的线程安全类组合成更大的组件,也是线程安全的;

      1.1 构造线程安全的类需要考虑:

        构成对象状态的所有变量;

        对象变量的不变性条件(对象的变量都有取值范围,要保证变量的取值都在这个范围内,

        否则,对象的状态就是无效的);

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

      1.2 类的不变性条件和类的后验条件

        不变性条件:变量都有一个取值范围,比如 long count,count的取值范围是Long.MIN_VALUE,Long.MAX_VALUE,

        再加上自己定义的count>=0;故count变量的不变性条件就是count>=0 && count <= Long.MAX_VALUE;

        后验条件:判断对象从一个状态A转到状态B是否是有效的;

      1.3 状态的所有权

       对象封装它的状态,就拥有状态的所有权,也就是能改变状态;如果对象的引用发布出去,就不是对象独占状态的所有权了,就是和其他一起共享状态的所有权;

    2.实例封闭

      对象A被封闭到另一个对象B里面,访问对象A的路径都是已知的,便于做到线程安全;如果数据被封闭到对象里面,要访问数据都要通过方法,从而更容易确保并发的时拿到正确的锁;

  • 相关阅读:
    Linux添加用户组和删除用户组
    购物意图分析
    架构是什么来的
    如何突破浏览器加载并发数的限制
    写JS自执行函数时要注意的
    网页是什么
    JVM
    javascript的边界
    浏览器
    HTTP
  • 原文地址:https://www.cnblogs.com/zhihuayun/p/6852958.html
Copyright © 2011-2022 走看看