8.2 正式起航
8.3 挂起整个虚拟机
8.4 调试进入ArrayList内部
图书在版编目(CIP)数据
实战Java高并发程序设计 / 葛一鸣,郭超编著.——北京:电子工业出版社,2015.11
ISBN 978-7-121-27304-9
Ⅰ.①实… Ⅱ.①葛… ②郭… Ⅲ.①JAVA语言—程序设计 Ⅳ.①TP312
中国版本图书馆CIP数据核字(2015)第231507号
责任编辑:董 英
印 刷:
装 订:
出版发行:电子工业出版社
北京市海淀区万寿路173信箱
邮 编:100036
开 本:787×980 1/16
印 张:22
字 数:493千字
版 次:2015年11月第1版
印 次:2015年11月第1次印刷
印 数:3000册
定 价:69.00元
凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888。
质量投诉请发邮件至zlts@phei.com.cn,盗版侵权举报请发邮件至dbqq@phei.com.cn。
服务热线:(010)88258888。
未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。
版权所有,侵权必究。
内容简介
在过去单核CPU时代,单任务在一个时间点只能执行单一程序,随着多核CPU的发展,并行程序开发就显得尤为重要。
本书主要介绍基于Java的并行程序设计基础、思路、方法和实战。第一,立足于并发程序基础,详细介绍Java中进行并行程序设计的基本方法。第二,进一步详细介绍JDK中对并行程序的强大支持,帮助读者快速、稳健地进行并行程序开发。第三,详细讨论有关“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍并行的基本设计模式及Java 8对并行程序的支持和改进。第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。
本书内容丰富,实例典型,实用性强,适合有一定Java基础的技术开发人员阅读。
前言
关于Java与并行
由于单核CPU的主频逐步逼近极限,多核CPU架构成为了一种必然的技术趋势。所以,多线程并行程序便显得越来越重要。并行计算的一个重要应用场景就是服务端编程。可以看到,目前服务端CPU的核心数已经轻松超越10核心,而Java显然已经成为当下最流行的服务端编程语言,因此熟悉和了解基于Java的并行程序开发有着重要的实用价值。
本书的体系结构
本书立足于实际开发,又不缺乏理论介绍,力求通俗易懂、循序渐进。本书共分为8章。
第1章主要介绍了并行计算中相关的一些基本概念,树立读者对并行计算的基本认识;介绍了两个重要的并行性能评估定律,以及Java内存模型JMM。
第2章介绍了Java并行程序开发的基础,包括Java中Thread的基本使用方法等,也详细介绍了并行程序容易引发的一些错误和误用。
第3章介绍了JDK内部对并行程序开发的支持,主要介绍JUC(Java.util.concurrent)中一些工具的使用方法、各自特点及它们的内部实现原理。
第4章介绍了在开发过程中可以进行的对锁的优化,也进一步简要描述了Java虚拟机层面对并行程序的优化支持。此外,还花费一定篇幅介绍了有关无锁的计算。
第5章介绍了并行程序设计中常见的一些设计模式以及一些典型的并行算法和使用方法,其中包括重要的Java NIO和AIO的介绍。
第6章介绍了Java 8中为并行计算做的新的改进,包括并行流、CompletableFuture、StampedLock和LongAdder。
第7章主要介绍了高并发框架Akka的基本使用方法,并使用Akka框架实现了一个简单的粒子群算法,模拟超高并发的场景。
第8章介绍了使用Eclipse进行多线程调试的方法,并演示了通过Eclipse进行多线程调试重现ArrayList的线程不安全问题。
本书特色
本书的主要特点如下。
结构清晰。本书一共8章,总体上循序渐进,逐步提升。每一章都各自有鲜明的侧重点,有利于读者快速抓住重点。
理论结合实战。本书注重实战,书中重要的知识点都安排了代码实例,帮助读者理解。同时也不忘记对系统的内部实现原理进行深度剖析。
通俗易懂。本书尽量避免采用过于理论的描述方式,简单的白话文风格贯穿全书,配图基本上为手工绘制,降低了理解难度,并尽量做到读者在阅读过程中少盲点、无盲点。
适合阅读人群
虽然本书力求通俗,但要通读本书并取得良好的学习效果,要求读者需要具备基本的Java知识或者一定的编程经验。因此,本书适合以下读者:
拥有一定开发经验的Java平台开发人员(Java、Scala、JRuby等)
软件设计师、架构师
系统调优人员
有一定的Java编程基础并希望进一步加深对并行的理解的研发人员
本书的约定
本书在叙述过程中,有如下约定:
本书中所述的JDK 1.5、JDK 1.6、JDK 1.7、JDK 1.8分别等同于JDK 5、JDK 6、JDK 7、JDK 8。
如无特殊说明,本书的程序、示例均在JDK 1.7环境中运行。
联系作者
本书的写作过程远比我想象得更艰辛,为了让全书能够更清楚、更正确地表达和论述,我经历了很多个不眠之夜,即使现在回想起来,我也忍不住会打个寒战。由于写作水平的限制,书中难免会有不妥之处,望读者谅解。
为此,如果读者有任何疑问或者建议,非常欢迎大家加入QQ群397196583,一起探讨学习中的困难、分享学习的经验,我期待与大家一起交流、共同进步。同时,也希望大家可以关注我的博客http://www.uucode.net/。
感谢
这本书能够面世,是因为得到了众人的支持。首先,要感谢我的妻子,她始终不辞辛劳、毫无怨言地对我照顾有加,才让我得以腾出大量时间,并可以安心工作。其次,要感谢所有编辑为我一次又一次地审稿改错,批评指正,才能让本书逐步完善。最后,感谢我的母亲30年如一日对我的体贴和关心。
参与本书编写的还有安继宏、白慧、薛淑英、蒋玺、曹静、马玉杰、陈明明、张丽萍、任娜娜、李清艺、荆海霞、赵全利、孙迪,在此一并感谢!
葛一鸣