Java 并发编程实战.pdf

所需积分/C币:23 2017-07-28 8.86MB pdf
评分

Java 并发编程实战.pdf
对本书的赞誉 “我曾有幸在一个伟大的团队中工作,参与设计和实现在Java50和Java6等平台中新增的 并发功能。现在,仍然是这个团队,将透彻地讲解这些新功能,以及关于并发的一般性概念。并 发已不再只是高级用户谈论的话题,每一位Java开发人员都应该阅读这本书。” Martin buchholz,Sun公司的JDK并发大师 “在过去30多年时间里,计算机性能一直遵循着摩尔定律,但从现在开始,它将遵循 Amdahl定律。编写能高效利用多处理器的代码非常具有挑战性。在这本书中介绍的一些 概念和技术,对于在当前(以及未来的)系统上编写安全的和可伸缩的代码来说都是非常有 用的 Doron rajan, Intel公司研究人员 “如果你正在编写、设计、调试、维护以及分析多线程的Java程序,那么本书正是你所需要 的。如果你曾对某个方法进行过同步,但却不理解其中的原因,那么你以及你的用户都有必要从 头至尾仔细地读一读这本书。” Ted Neward,《 Etfective Enterprise Java》的作者 “Bian非常清晰地闻述了并发的一些基本问题与复杂性。对于使用线程并关注程序执行性能 的开发人员来说,这是一本必读的书。” Kirk Pepperdine, JavaPerformance Tuning com px]A CtO “本书深入浅出地介绍了一些复杂的编程主题,是一本完美的Java并发参考手册。书中的每 页都包含了程序员日常需要应对的问题(以及相应的解决方案)。随着摩尔定律的发展趋势由 提高处理器核的速度转向增加处理器核的数量,如何有效地利用并发性已变得越来越重要,本书 正好介绍了这些方面的内容。” Cliff Click博士, Azul Systems公司高级软件工程师 “我对并发有着浓厚的兴趣,并且与大多数程序员相比,我或许写过更多存在线程死锁的代 码,也在同步上犯了更多的错误。在介绍Java线程和并发等主题的众多书籍中, Brian的这本 书最具可读性,它通过循序渐进的方式将一些复杂的主题阐述得很清楚。我将本书推荐给Java Specialists' Newsletter的所有读者,因为它不仅有趣,而且很有用,它介绍了当前Java开发人员 正在面对的许多问题。” Heinz kabutz博士, Java Specialists: Newsletter的维护者 “我一直努力想使一些简单的问题变得更简单,然而本书已经简化了一个复杂但却关键的主 题:并发。这本书采用了创新的讲解方法、简单明了的风格,它注定会成为一本非常重要的书。 Bruce Tate,《 Beyond Java》的作者 这本书为Jaa开发人员在线程编程领域提供了不可多得的知识。我在读这本书时受到了极 大的启发,部分原因在于它详细地介绍了Java中并发领域的API,但更重要的却在于这本书以 种透彻并且易懂的方式来介绍复杂的并发知识,这是其他书籍很难媲美的。 Bill venners,《 Inside the Java Virtual machine》的作者 译者序 并发编程是Java语言的重要特性之一,在Java平台上提供了许多基本的并发功能来辅助开 发多线程应用程序。然而,这些相对底层的并发功能与上层应用程序的并发语义之间并不存在 种简单而直观的映射关系。因此,如何在Java并发应用程序中正确且高效地使用这些功能就成 了Java开发人员的关注重点 本书正是为了解决这个问题而写的。书中采用循序渐进的讲解方式,从并发编程的基本理论 入手,逐步介绍了在设计Java并发程序时各种重要的设计原则、设计模式以及思维模式,同时 辅以丰富的示例代码作为对照和补充,使得开发人员能够更快地领悟Java并发编程的要领,围 绕着Java平台的基础并发功能快速地构建大规模的并发应用程序。 全书内容由浅入深,共分为四个部分。第一部分介绍了Java并发编程的基础理论,包括线 程安全性与状态对象的基础知识,如何构造线程安全的类并将多个小型的线程安全类构建成更 大型的线程安全类,以及Java平台库中的一些基础并发模块;第二部分介绍了并发应用程序的 构造理论,包括应用程序中并行语义的分解及其与逻辑任务的映射,任务的取消与关闭等行为的 实现,以及Jaⅵa线程池中的一些高级功能,此外还介绍了如何提高GUI应用程序的响应性;第 三部分介绍了并发编程的性能调优,包括如何避免活跃性问题,如何提高并发代码的性能和可伸 缩性以获得理想的性能,以及在测试并发代码正确性和性能时的一些实用技术;第四部分介绍了 Java并发编程中的一些高级主题,包括显式锁、原子变量、非阻塞算法以及如何开发自定义的同 步工具类等。 本书的特点在于注重阐述并发技术背后的理论知识,对于每种技术的介绍不仅使读者能做到 “知其然”,更能做到“知其所以然”。对于希望深入硏究和探索Java并发编程的读者来说,本书 是非常合适的。 参与本书翻译工作的还有李杨、吴汉平、徐光景、童胜汉、陈军、胡凯、刘红、张玮、陈 红、李斌、李勇涛、王海涛、周云波、彭敏才、张世锋、朱介秋、宗敬、李静、叶锦、髙波、熊 莉、程凤、陈娟、胡世娟、董敏、谢路阳、冯卓、李志勇、胡欢、王进等。由于译者的时间和水 平有限,翻译中的疏漏和镨误在所难免,还望读者和同行不吝指正。 童云兰 2011年11月于武汉 前言 在写作本书时,对于中端桌面系统来说,多核处理器正变得越来越便宜。无独有偶,许多开 发团队也注意到,在他们的项目中出现了越来越多与线程有关的错误报告。在 NetBeans开发者 网站上的最近一次公告中,一位核心维护人员注意到,为了修复与线程相关的问题,在某个类中 竟然打了14次补丁。 Dion almaer,这位 TheServerSide网站的前编辑,最近(在经过一番痛苦的 调试过程并最终发现了一个与线程有关的错误之后)在其博客上写道,在大多数Jav程序中充 满了各种并发错误,使得程序只有在“偶然的情况下”才能正常工作 确实,在开发、测试以及调试多线程程序时存在着巨大的困难,因为并发性错误通常并不会 以某种确定的方式显现出来。当这些错误出现时,通常是在最糟糕的时刻,例如在正式产品中 或者在高负载的情况下 当开发Java并发程序时,所要面对的挑战之一就是:平台提供的各种并发功能与开发人员 在程序中需要的并发语义并不匹配。在Java语言中提供了一些底层机制,例如同步和条件等待, 但在使用这些机制来实现应用级的协议与策略时必须始终保持一致。如果没有这些策略,那么在 编写程序时,虽然程序看似能顺利地编译和运行,但却总会出现各种奇怪的问题。许多介绍并发 的其他书籍更侧重于介绍一些底层机制和APⅠ,而在设计级的策略和模式上叙述的不多。 Java5.0在Java并发应用程序的开发方面进展巨大,它不仅提供了一些新的高层组件,还补 充了一些底层机制,从而使得无论是新手级开发人员还是专家级开发人员都能够更容易地构建并 发应用程序。本书的作者都是JCP专家组的主要成员,也正是该专家组编写了这些新功能。本 书不仅描述了这些新功能的行为和特性,还介绍了它们的底层设计模式和促使它们被添加到平台 库中的应用场景。 我们的目标是向读者介绍一些设计规则和思维模式,从而使读者能够更容易也更乐意去构建 正确的以及高性能的Java并发类和应用程序。 我们希望你能享受本书的阅读过程 Brian goetz Williston VT 2006年3月 如何使用本书 为了解决在Java底层机制与设计级策略之间的不匹配问题,我们给出了一组简化的并发程 序编写规则。专家看到这些规则会说:“嗯,这并不是完整的规则集。即使类C违背了规则R, 它仍然是线程安全的。”虽然在违背一些规则的情况下仍有可能编写出正确的并发程序,但这需 VII 要对Java内存模型的底层细节有着深入的理解,而我们希望开发人员无须掌握这些细节就能 编写出正确的并发程序。只要始终遵循这组简单的规则,就能编写出正确的并且可维护的并发 程序 我们假设读者对Java的基本并发机制已经有了一定程度的了解。本书并非是对并发的 入门介绍—一要了解这方面的内容,请参考其他书籍中有关线程的内容,例如《 The java Programming Language》( Arnold等,2005)。此外,本书也不是介绍并发的百科全书——要了 解这方面的内容,请参考《 Concurrent Programming in Java》(Lea,2000)。事实上,本书提供 了各种实用的设计规则,用于帮助开发人员创建安全的和高性能的并发类。在本书中相应的地 方引用了以下书籍中的相关章节:《 The Java Programming Language》、《 Concurrent Programming in Java》、《 The Java Language Specification》( Gosling等,2005)以及《 Effective Java》( Bloch, 2001),并分别使用[PLnm]、[ CPJ nm、[ ULS nm和[ i] Item n来表示它们。 在进行简要的介绍(第1章)之后,本书共分为四个部分 基础知识。第一部分(第2章~第5章)重点介绍了并发性和线程安全性的基本概念,以及 如何使用类库提供的基本并发构建块来构建线程安全类。在第一部分给出了一个清单,其中总结 了这一部分中介绍的最重要的规则。 第2章与第3章构成了本书的基础。在这两章中给出了几乎所有用于避免并发危险、构造线 程安全的类以及验证线程安全的规则。如果读者重“实践”而轻“理论”,那么可能会直接跳到 第二部分,但在开始编写任何并发代码之前,一定要回来读一读这两章! 第4章介绍了如何将一些小的线程安全类组合成更大的线程安全类。第5章介绍了在平台库 中提供的一些基础的并发构建模块,包括线程安全的容器类和同步工具类。 结构化并发应用程序。第二部分(第6章~第9章)介绍了如何利用线程来提高并发应用程 序的吞吐量或响应性。第6章介绍了如何识别可并行执行的任务,以及如何在任务执行框架中 执行它们。第7章介绍了如何使任务和线程在执行完正常工作之前提前结束。在健壮的并发应 用程序与看似能正常工作的应用程序之间存在的重要差异之一就是,如何实现取消以及关闭等 操作。第8章介绍了任务执行框架中的一些更高级特性。第9章介绍了如何提高单线程子系统 的响应性。 活跃性、性能与测试。第三部分(第10章~第12章)介绍了如何确保并发程序执行预期的 任务,以及如何获得理想的性能。第10章介绍了如何避免一些使程序无法执行下去的活跃性故 障。第11章介绍了如何提高并发代码的性能和可伸缩性。第12章介绍了在测试并发代码的正确 性和性能时可以采用的一些技术。 高级主题。第四部分(第13章~第16章)介绍了资深开发人员可能感兴趣的一些主题, 包括:显式锁、原子变量、非阻塞算法以及如何开发自定义的同步工具类。 代码示例 虽然书中很多一般性的概念同样适用于Java50之前的版本以及一些非Java的运行环境, 但其中大多数示例代码(以及关于Java内存模型的所有描述)是基于Java50或更高版本的,而 且某些代码示例中还使用了Java6的一些新增功能。 我们对书中的代码示例已经进行了压缩,以便减少代码量并重点突出与内容相关的部分。 在本书的网站htp:/www.javaconcurrencyinpractice.com上提供了完整的代码示例、辅助示例 以及勘误表。 代码示例可分为三类:“好的”示例、“一般的”示例和“糟糕的”示例。“好的”示例是应 该被效仿的技术。“糟糕的”示例是一定不能效仿的技术,而且还会用一个“ Mr Yuk”的图标 来表示该示例中的代码是“有害的”(参见程序清单1)。“一般的”示例给出的技术并不一定是 错的,但却是脆弱的、有风险的或是性能较差的,并且会用一个“ Mr Could Be happier”图标来 表示,如程序清单2所示 程序清单1糟糕的链表排序方式(不要这样做) public <T extends Comparables? super T>> void sort(List<T> list)i //永远不要返回错误的答案 System. exit(o) 有些读者会质疑这些“糟糕的”示例在本书中的作用,毕竟,在一本书中应该给出如何做正 确的事,而不是错误的事。这些“糟糕的”示例有两个目的,它们揭示了一些常见的缺陷,但更 重要的是它们示范了如何分析程序的线程安全性,而要实现这个目的,最佳的方式就是观察线程 安全性是如何被破坏的 程序清单2非最优方式的链表排序 public <t extends Comparables? super T>> void sort(List<T> list) f。r(inti=0;i<1000000;i++) hing ( Collections. sort(list) 致谢 本书诞生于 Java Community Process JSR166为Java5.0开发 java util.concurrent包的过程中 还有许多人参与到JSR166中,特别感谢 Martin buchholz将全部的工作融入到JDK中,并感谢 concurrency- Interest邮件列表中的所有读者对API草案提出的建议和反馈。 有不少来自各方面的人员都提出了建议和帮助,使得本书的内容得到了极大的充实。感谢 Dion almaer、 Tracy Bialik、 Cindy bloch、 Martin buchholz、 Paul christmann、 Cliff click、 Stuart Halloway、 David Havemeyer、 Jason hunter、 Michael hunter、 Jeremy Hylton、 Heinz Kabutz、 Robert kuhar、 Ramnivas laddad、 Jared Levy、 Nicole Lewis、 Victor Luchangco、 Jeremy Manson、 Paul Martin、 Berna Massingill, Michael Maurer、 Ted Neward、 Kirk Pepperdine、 Bill Pugh、Sam Pullara、 Russ rufer、 Bill scherer、 Jeffrey Siegal、 Bruce Tate、 Gil Tene、 Paul Tyma,以及硅谷模 eMYk是匹兹堡儿童医院的注册商标,本书获得了该商标的授权,因此可以在本书中使用。 式小组的所有成员,他们通过各种技术交流为本书提供了指导建议,使得本书更加完善。 特别感谢 Cliff Biffle、 Barry Hayes、 Dawid Kurzyniec、 Angelika Langer、 Doron rajan和 Bill venners,他们非常仔细地审阅了本书的全稿,指出了代码示例中的错误,并提出了大量的 改进建议。 感谢 Katrina Avery的编辑工作,以及 Rosemary Simpson在非常短的时间里完成了索引生成 工作。感谢 Ami dewa绘制的插图。 感谢 Addison- Wesley的全体成员,他们使本书得以最终问世。 Ann sellers启动了编写本书 的项目, Greg Doench监督并帮助本书有条不秦地完成, Elizabeth Ryan负责本书的出版过程。 此外还要感谢许许多多的软件工程师,他们开发了本书得以依赖的各种软件,这些软件包括 Tx、 LATEX、 Adobe acrobat、pic、grap、 adobe illustrator、Perl、 Apache Ant、 IntelliJ IDea、 GNU emacs、 Subversion、 TortoiseSⅤN,当然,还有Java平台及其类库。 目录 对本书的赞誉 25活跃性与性能 …23 译者序 第3章对象的共享…………………27 31可见性 27 3.1.1失效数据…… 28 第1章简介… 3.1.2非原子的64位操作 …29 1.1并发简史…… 313加锁与可见性 30 1.2线程的优势 314 Volatile变量… 30 1.2.1发挥多处理器的强大能力 23.2发布与逸出 32 22建模的简单性… 333线程封闭 …35 1.23异步事件的简化处理… 331Ad-hoc线程封闭 35 1.24响应更灵敏的用户界面 433.2栈封闭……… …36 1.3线程带来的风险 333 ThreadLocal类 37 1.3.1安全性问题……… 34不变性………… 38 1.3.2活跃性问题……… 777 34.1 Final域 39 1.3.3性能问题 342示例:使用 Volatile类型来发布 14线程无处不在 不可变对象… ……40 35安全发布 4I 第一部分基础知识 351不正确的发布:正确的对象被 第2章线程安全性 破坏 42 2.1什么是线程安全性 352不可变对象与初始化安全性……42 2,2原子性 33安全发布的常用模式 43 221竞态条件 …15 354事实不可变对象 44 222示例:延迟初始化中的竞态条件…16355可变对象 44 223复合操作 17 356安全地共享对象 23加锁机制…… ·自◆音 18第4章对象的组合…… …46 2.3.l内置锁 2041设计线程安全的类 40 23.2重入 ………2I 4.1.1收集同步需求 7 24用锁来保护状态 …………22 4.1.2依赖状态的操作 48

...展开详情
立即下载 最低0.43元/次 学生认证VIP会员7折
举报 举报 收藏 收藏
分享
36.87MB
JAVA并发编程

JAVA并发编程实践 JAVA并发编程实践 JAVA并发编程实践

2018-07-31 立即下载
9.36MB
Java并发编程艺术

Java并发编程艺术Java并发编程艺术Java并发编程艺术Java并发编程艺术Java并发编程艺术

2018-01-03 立即下载
126B
JAVA并发编程践》PDF

资源名称:《JAVA并发编程实践》PDF 内容简介;《JAVA并发编程实践》随着多核处理器的普及,使用并发成为构建高性能应用程序的关键。Java 5以及6在开发并发程序中取得了显著的进步,提高了Java虚拟机的性能以及并发类的可伸缩性,并加入了丰富的新并发构建块。在《JAVA并发编程实践》中,这些便利工具的创造者不仅解释了它们究竟如何工作、如何使用,还阐释了创造它们的原因,及其背后的设计模式。本书 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

2019-07-22 立即下载
106.34MB
java并发编程2

java并发编程pdf文档第二部分:Java并发编程实战.pdf、Java多线程编程核心技术.pdf、实战Java高并发程序设计.pdf

2019-02-15 立即下载
145.41MB
Java并发编程之美》.zip

《Java并发编程之美》通过图文结合、通俗易懂的讲解方式帮助大家完成多线程并发编程从入门到实践的飞跃!《Java并发编程之美》分为三部分,第一部分为Java 并发编程基础篇,主要讲解Java 并发编程的基础知识、线程有关的知识和并发编程中的其他相关概念,这些知识在高级篇都会有所使用,掌握了本篇的内容,就为学习高级篇奠定了基础;第二部分为Java 并发编程高级篇,讲解了Java 并发包中核心组件的实现原理,让读者知其然,也知其所以然,熟练掌握本篇内容,对我们在日常开发高并发、高流量的系统时会大有裨益;第三部分为Java 并发编程实践篇,主要讲解并发组件的使用方法,以及在使用过程中容易遇到的问题和

2019-06-18 立即下载
12.31MB
java并发编程艺术

java学习的利器;并发编程的目的是为了让程序运行的更快,但是并不是启动更多的线程,就能让程序最大限度的并发执行。在进行并发编程时,如果希望通过多线程执行任务让程序运行的更快,会面临非常多的挑战,比如上下文切换的问题,死锁的问题,以及受限于硬件和软件的资源限制问题,本章会介绍几种并发编程的挑战,以及解决方案。

2018-07-23 立即下载
28.53MB
JAVA并发编程艺术 高清pdf

JAVA并发编程艺术 高清pdf : 1.并发变成的挑战 2. java并发机制的底层实现原理 3. java 内存模型 4. java并发编程基础 5.java中的锁。。。。。。。

2017-09-07 立即下载
8.84MB
Java并发编程战》 (中文完整版)

《Java并发编程实战》深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册。书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容,最后介绍了一些高级主题,如显式锁、原子变量、非阻塞算法以及如何开发自定义的同步工具类。   《Java并发编程实战》适合Java程序开发人员阅读。

2018-04-18 立即下载
137KB
Java并发编程的艺术》源代码

Java并发编程的艺术 作者:方腾飞 魏鹏 程晓明 著 丛书名:Java核心技术系列 出版日期 :2015-07-25 ISBN:978-7-111-50824-3 第1章介绍Java并发编程的挑战,向读者说明进入并发编程的世界可能会遇到哪些问题,以及如何解决。 第2章介绍Java并发编程的底层实现原理,介绍在CPU和JVM这个层面是如何帮助Java实现并发编程的。 第3章介绍深入介绍了Java的内存模型。Java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰Java程序员,本章试图揭开Java内存模型的神秘面纱。 第4章从介绍多线程技术带来的好处开始,讲述了如何启动和终止线程以及线

2019-02-27 立即下载
8.73MB
java并发编程战高清版pdf

java并发编程实战高清版pdf自用,分享给大家

2019-02-19 立即下载
9.02MB
Java并发编程战.pdf

Java并发编程实战.pdf

2019-04-03 立即下载
8.81MB
JAVA并发编程战.pdf

JAVA并发编程实战.pdf-详细介绍了线程并发的机制的

2019-05-10 立即下载
69B
java并发编程战视频全套

java并发编程与实战视频全套,如果不想只会crud,那么学会java并发编程 是向java高级工程师进阶必不可少的。

2018-12-14 立即下载
8.73MB
Java 并发编程战PDF

Java 并发编程实战PDF,Java 并发编程实战PDF,Java 并发编程实战PDF

2017-11-02 立即下载
9.45MB
JAVA并发编程

JAVA并发编程实战-------java Concurrency in Practice

2019-01-10 立即下载
55B
JAVA并发编程与高并发解决方案 JAVA并发项目战课程

JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程

2019-04-01 立即下载
130KB
Java 并发编程战-随书源码

Java 并发编程实战-随书源码,下载即可使用。(压缩包附有PDF链接)

2018-04-27 立即下载
166B
Java并发编程战》PDF版本下载.txt

《Java并发编程实战》PDF版本下载

2019-07-18 立即下载
7.37MB
Java并发编程的艺术 (Java核心技术系列).epub

Java并发编程的艺术 (Java核心技术系列).epub Java并发编程的艺术 (Java核心技术系列).epub

2019-04-27 立即下载
9.25MB
(PDF带目录)《Java 并发编程战》,java并发战,并发

这就是最正宗的《Java 并发编程实战》带目录 用福昕阅读器打开查看特别的清晰

2018-10-19 立即下载
img
涂宗勋
  • 领英

    绑定领英第三方账户获取
  • GitHub

    绑定GitHub第三方账户获取
  • 签到新秀

    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)

    博客专家完成年度认证,即可获得

关注 私信 TA的资源

上传资源赚积分,得勋章
相关内容推荐