码迷,mamicode.com
首页 > 编程语言 > 详细

Java并发编程实践之对象的组合

时间:2017-05-31 11:55:06      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:value   线程   目的   范围   min   nbsp   并发编程   组合   访问   

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

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的路径都是已知的,便于做到线程安全;如果数据被封闭到对象里面,要访问数据都要通过方法,从而更容易确保并发的时拿到正确的锁;

 

Java并发编程实践之对象的组合

标签:value   线程   目的   范围   min   nbsp   并发编程   组合   访问   

原文地址:http://www.cnblogs.com/zhihuayun/p/6852958.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!