`
XinYiTian
  • 浏览: 35712 次
  • 性别: Icon_minigender_1
  • 来自: 泉州
文章分类
社区版块
存档分类
最新评论

第12章 测试并发程序(Java并发编程实践笔记四)

阅读更多
第12章 测试并发程序
并发类的测试基本分为两类,以安全性与活跃度的测试。
与活跃度测试相关的是性能测试。性能可以通过很多方式来测量,其中包括:
吞吐量:在一个并发任务集里,已完成任务所占的比例;
响应性:从请求到完成一些动作之间的延迟(也被称为等待时间)
可伸缩性:增加更多的资源(通常是指CPU),就能提高(或者缓解短缺)吞吐量。


为并发类创建有效的安全测试,其挑战在于:如何在程序出现问题并导致某些属性极度可能失败时,简单地识别出这些受检查的属性来,不

要人为地让查找错误的代码限制住程序的并发性。最好能做到在检查测试的属性时,不需要任何的同步。

测试应该在多处理器系统上运行,以提高潜在交替运行的多样性。但是,多个CPU未必会使测试更加高效。为了能够最大程度地检测到时序

敏感的数据竞争的发生机会,应该让测试中的线程数多于CPU数,这样在任何给定的时间里,都有一些线程在运行机制,一些被交换出执行队列,这样

可以增加线程间交替行为的随机性。

编写有效的性能测试,就需要哄骗优化器不要把你的基准测试当作死代码而优化掉。这需要每一个计算的结果都要应用在你的程序中-以一种

不需要的同步或真实计算的方式。一种方式为:
if (str.hashCode() == System.nanoTime())
System.out.println();
总结:
测试并发程序的正确性是一项极大的挑战,因为并发程序很多可能的失败模式都是低可能性的事件,它们很容易受到时序、加载和其他一些

难以再现的条件的影响。更进一步而言,在测试基础架构时,还会引入额外的同步或者分时的约束,这些会屏蔽被测代码中的并发问题。测试并发程序

的性能同样是一项的挑战;比起用像C这样静态编译语言编写的程序,Java程序格外地难以测试,因为动态编译、垃圾回收以及自动的优化,都会影响

对时间的测量。
为了尽可能发现bug,避免在生产环境中才发现它们,应该在运用传统的测试技术(谨慎地避免这里讨论过的各种缺陷)的同时,结合代码审

查和自动化分析工具。每种技术都会发现其他技术可能忽略掉的问题。

分享到:
评论

相关推荐

    java并发编程实践笔记

    ### Java并发编程实践笔记知识点详解 #### 一、保证线程安全的方法 1. **不要跨线程访问共享变量:** 当多个线程共享某个变量时,若其中一个线程修改了该变量,其他线程若没有正确同步,则可能读取到错误的数据。...

    Java语言程序设计学习笔记

    Java语言程序设计学习笔记是为初学者和有一定基础的开发者准备的一份详尽教程,它涵盖了从基础到进阶的各个重要知识点。这份笔记以Markdown(md)文件的形式组织,便于阅读和检索,使得学习过程更为高效。 首先,...

    Java 基础 第3阶段:高级应用-尚硅谷学习笔记(含面试题) 2023年

    在Java的高级应用领域,开发者通常需要掌握一系列深入的技术和概念,这些内容涵盖了多线程、集合框架、网络编程、反射、I/O流、异常处理、设计模式等多个方面。在这个阶段的学习中,尚硅谷提供了2023年的学习笔记和...

    2019年魔乐Java培训课堂原版笔记-Word版.zip

    12-第十二天-魔乐java基础视频学习笔记.docx:可能涵盖了接口和包的使用,接口用于定义行为规范,包则用于组织和管理类。 13-第十三天-魔乐java基础视频学习笔记.docx:可能是对Java SE的一些高级主题进行总结,...

    Java十大基础笔记整理(PDF)

    下面,我们将深入探讨Java的基础知识,涵盖核心概念、语法和编程实践。 1. **Java简介**:Java是由Sun Microsystems公司(现已被Oracle收购)开发的一种面向对象的编程语言,具有“一次编写,到处运行”的特性。它...

    《良葛格的Java学习笔记》

    《良葛格的Java学习笔记》是一本专为Java初学者设计的教程,作者林信良深入浅出地讲解了Java编程的基础知识。这本笔记覆盖了Java学习的重要概念,包括但不限于以下几个方面: 1. **Java简介**:Java是一种跨平台、...

    龙哥的Java基础笔记大全

    2. **环境配置**:学习Java的第一步是安装Java Development Kit (JDK),并设置好环境变量`JAVA_HOME`、`PATH`和`CLASSPATH`,确保系统能够正确识别和执行Java程序。 3. **语法基础**: - **数据类型**:Java分为...

    传智播客Java_SE基础毕向东老师全程笔记

    多线程是Java并发编程的基础,本章探讨了如何在Java中创建与管理线程,理解线程生命周期,以及如何实现线程同步与通信,提高程序的执行效率与响应速度。 #### 第六章:常用类API 本章涵盖了Java标准库中的重要类与...

    21天学java培训笔记和代码

    本资源“21天学Java培训笔记和代码”旨在帮助初学者在短时间内掌握Java核心概念,通过实践和理论相结合的方式提升学习效率。这份资料包含的文件很可能是每日学习计划的总结,包括关键知识点的笔记和相应的示例代码。...

    JAVA初级教学笔记

    12. **多线程**: 压缩包中的“第九章、第十二章、第十四章多线程”着重介绍了并发编程。Java提供了Thread类和Runnable接口来创建线程,理解线程的生命周期、同步机制(如synchronized关键字,wait(),notify())以及...

    韩顺平java从入门到精通1-32课源码笔记

    以上只是《韩顺平java从入门到精通1-32课源码笔记》中的部分核心知识点,实际上,这份资料可能还包含了更多高级主题,如并发编程、Java EE(企业级应用)、框架技术等。通过系统学习和实践,可以逐步成为一名熟练的...

    JAVA6学习笔记 最新版的

    Java 6学习笔记是针对初学者和有一定经验的开发者提供的一份全面的教育资源,它涵盖了Java编程语言的基础到高级概念。这份笔记旨在帮助读者深入理解Java 6的关键特性,提高编程技能,并为实际项目开发打下坚实基础。...

    java 学习笔记大全

    Java是一种广泛使用的面向对象的...这份"java 学习笔记大全"应该覆盖了以上所有知识点,通过学习和实践,你可以掌握Java编程的核心技能,无论是进行简单的控制台程序开发,还是复杂的分布式系统设计,都将游刃有余。

    java学习笔记4

    Java学习笔记第四部分主要涵盖了Java编程语言的深入学习内容,可能是继基础语法、面向对象编程之后的高级主题。"良葛格"作为编著者,可能以易懂且实用的方式阐述了这些概念。以下是根据标题和描述可能包含的知识点:...

    在达内学习java的笔记

    12. **Java复习第十二天**:可能涉及反射机制,用于在运行时动态获取类的信息和调用方法,以及Java代理(Proxy)和动态代理。 13. **Java复习第十三天**:最后可能会讲解一些高级话题,如集合框架的高级特性和并发...

    java核心笔记 这是很基础的笔记 我自己整理的

    第12-13天:接口与枚举 接口是Java中的另一种抽象,用于定义行为规范。你将学习接口的使用和实现,以及它们在实现多继承中的角色。同时,枚举类型提供了一种安全的常量表示方式,笔记会介绍其特点和用法。 第14天:...

    JAVA零基础学习-课堂笔记

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、健壮性和安全性著称。对于零基础的初学者来说,理解并掌握Java的基础知识是至关重要的。以下是对"JAVA零基础学习-课堂笔记"中可能涵盖的一些关键知识点的详细...

    东北大学计算机考研Java知识点笔记

    掌握并发编程的基本原理和实践技巧是高级Java开发者必备的能力。 9. **输入输出流**:Java的IO流系统分为字节流和字符流,包括文件操作、网络通信和对象序列化。了解并能运用BufferedReader、BufferedWriter、...

Global site tag (gtag.js) - Google Analytics