多线程程序的评量标准
来源:互联网 发布:华信在线网络贷款 编辑:程序博客网 时间:2024/06/05 08:51
多线程程序的评量标准
(摘自《Java多线程设计》)
1.安全性-不损坏对象
对象损坏是一种比喻手法,因为对象是内存上的虚拟实体,不可能有实际损坏的问题.对象损坏则是指对象的状态不符合设计师的设计原意,通常是对象的字段所取得的值并非预期值.
2.生存性-进行必要的处理
生存性(liveness)是指也许不是现在但一定会进行必要的处理.这也是正常使用的程序的必要条件之一.
不见得满足了不损坏对象的条件,就是一定是好程序.讲得夸张点,假设现在有一个程序执行到一半突然停止.此时,既然程序没有进行任何处理,对象状态就没有变化;而对象状态没有变化,当然也不会异常,在逻辑上,这个情况也满足了维护"安全性"的条件.但是一个不能动的程序根本没有用,虽然有还是等于没有啊."也许不是现在但一定会进行必要的处理",这就是生存性.
有时候,安全性跟生存性刚好互相抵触,例如,越想提高安全性就会相对降低生存性.最典型的例子就是死锁(deadlock),这是一种1个以上的线程在彼此等等待对方释放锁住的状况.
3.复用性-可再利用类
复用性(reusability)是指可再利用类.这并不是必备的条件,但却是提高程序质量的重点条件.
如果A类原来是一个已确认可正常使用的软件程序的一部分,而且A类又可切出来当作零件,这个类A就是具有高度的复用性.
在写多线程程序时,若能巧妙地将线程的共享互相斥结构和方针隐藏在类里,这就是一个具有高度的复用性的程序.
4.性能-能快速、大量的进行处理
性能( performance)是指能快速、大量进行处理.这也不是必备的条件,但仍是欲提高程序质量时应考虑的重点部份.
影响性能优劣的因素又分好几种,下面是根据Lea的性能分类摘录出来的主要部分:
数据吞吐量(throughput)是指在一定时间内所有完成的处理量.能处理的数量越多,则表示数据吞吐量越高.
响应性(reaponsiveness)是指从发出要求到收到反应的时间.所费时间越短,则程序的响应性越高.以GUI为例,到处理"结束"的所费时间可能比到处理"开始"的所费时间更重要.前者是指实际处理所花费时间,后者则是程序第一时间的反应返回到用户那端所花费的时间.简单来说,"点选按键后都没反应,等到10秒后画面上才出现"处理完毕的"的消息"跟"点选按键后立即"处理中...."的消息"两者相比较之后,后者的响应性显然比较高.无论一个处理要花多少时间才能处理完,"立即能收到响应"才会让用户比较放心.这个响应性又称为等待时间(latency).
容量(capacity)是指可同时处理的数量.例如,服务器可同时处理的客户端数量或文件数量等.
其他像是效率(efficiency)、可伸缩性(scalability)、退化(degradation)等都可作为性能的评量标准.
评量标准的总结
程序既不能损害对象,也一定要进行必要的处理.设计多线程程序时,必须维持程序的安全性(safety)和生存性(liveness).
满足这两个必要条件之后,再来考虑如何提高复用性(reusability)和性能工巧匠(performance).
根据下列评量标准分析
a.安全性与生存性-必要条件
b.复用性与性能-提高程序质量
1.安全性-不损坏对象
对象损坏是一种比喻手法,因为对象是内存上的虚拟实体,不可能有实际损坏的问题.对象损坏则是指对象的状态不符合设计师的设计原意,通常是对象的字段所取得的值并非预期值.
2.生存性-进行必要的处理
生存性(liveness)是指也许不是现在但一定会进行必要的处理.这也是正常使用的程序的必要条件之一.
不见得满足了不损坏对象的条件,就是一定是好程序.讲得夸张点,假设现在有一个程序执行到一半突然停止.此时,既然程序没有进行任何处理,对象状态就没有变化;而对象状态没有变化,当然也不会异常,在逻辑上,这个情况也满足了维护"安全性"的条件.但是一个不能动的程序根本没有用,虽然有还是等于没有啊."也许不是现在但一定会进行必要的处理",这就是生存性.
有时候,安全性跟生存性刚好互相抵触,例如,越想提高安全性就会相对降低生存性.最典型的例子就是死锁(deadlock),这是一种1个以上的线程在彼此等等待对方释放锁住的状况.
3.复用性-可再利用类
复用性(reusability)是指可再利用类.这并不是必备的条件,但却是提高程序质量的重点条件.
如果A类原来是一个已确认可正常使用的软件程序的一部分,而且A类又可切出来当作零件,这个类A就是具有高度的复用性.
在写多线程程序时,若能巧妙地将线程的共享互相斥结构和方针隐藏在类里,这就是一个具有高度的复用性的程序.
4.性能-能快速、大量的进行处理
性能( performance)是指能快速、大量进行处理.这也不是必备的条件,但仍是欲提高程序质量时应考虑的重点部份.
影响性能优劣的因素又分好几种,下面是根据Lea的性能分类摘录出来的主要部分:
数据吞吐量(throughput)是指在一定时间内所有完成的处理量.能处理的数量越多,则表示数据吞吐量越高.
响应性(reaponsiveness)是指从发出要求到收到反应的时间.所费时间越短,则程序的响应性越高.以GUI为例,到处理"结束"的所费时间可能比到处理"开始"的所费时间更重要.前者是指实际处理所花费时间,后者则是程序第一时间的反应返回到用户那端所花费的时间.简单来说,"点选按键后都没反应,等到10秒后画面上才出现"处理完毕的"的消息"跟"点选按键后立即"处理中...."的消息"两者相比较之后,后者的响应性显然比较高.无论一个处理要花多少时间才能处理完,"立即能收到响应"才会让用户比较放心.这个响应性又称为等待时间(latency).
容量(capacity)是指可同时处理的数量.例如,服务器可同时处理的客户端数量或文件数量等.
其他像是效率(efficiency)、可伸缩性(scalability)、退化(degradation)等都可作为性能的评量标准.
评量标准的总结
程序既不能损害对象,也一定要进行必要的处理.设计多线程程序时,必须维持程序的安全性(safety)和生存性(liveness).
满足这两个必要条件之后,再来考虑如何提高复用性(reusability)和性能工巧匠(performance).
根据下列评量标准分析
a.安全性与生存性-必要条件
b.复用性与性能-提高程序质量
- 多线程程序的评量标准
- 多线程程序的评量标准
- 评量子论的两本科普书籍
- 用标准Windows API创建多线程程序
- 用标准 Windows API 创建多线程程序
- 用标准 Windows API 创建多线程程序
- 标准 标准程序标准。
- 修改标准程序的文本
- python程序的标准输入输出
- 标准的MySQL JDBC程序
- 多线程程序的建立
- 多线程程序的调试
- 简单的多线程程序
- 多线程的死锁程序
- 多线程_多线程程序的引入
- 可以修改任意程序(包括SAP标准程序)的程序
- 一个基本的、标准的c++程序
- 实时得到程序的标准输出
- 深入浅出C# 中文版 图文皆译 第四章 类型和引用 page140
- Prototype库结构图
- 扑克牌计算24点的Java算法实现
- 也看:中级程序员突破瓶颈,提高自己的一些建议
- C#日记2--Gridview
- 多线程程序的评量标准
- JRE,JDK,JVM的区别
- 简单 程序员 music
- 利用C#实现任务栏通知窗口
- Windows 中一些删不了的文件夹
- USB device
- YUM命令详解
- .net中class和struct的区别
- PostgreSQL数据库忘记密码的解决方案