前言

关于Java与并行

由于单核CPU的主频逐步逼近极限,多核CPU架构成了一种必然的技术趋势,因此多线程并行程序便显得越来越重要。并行计算的一个重要应用场景就是服务端编程。目前服务端CPU的核心数已经轻松超越10个,而Java显然已经成为当下最流行的服务端编程语言,且已经更新到JDK 10,因此熟悉和了解基于Java的并行程序开发有着重要的实用价值。

本书的体系结构

本书立足于实际开发,又不缺乏理论介绍,力求通俗易懂、循序渐进。本书共分为9章。

第1章主要介绍了并行计算中相关的一些基本概念,树立读者对并行计算的基本认识,介绍了两个重要的并行性能评估定律,以及Java内存模型JMM。

第2章介绍了Java并行程序开发的基础,包括Java中Thread的基本使用方法等,也详细介绍了并行程序容易引发的一些错误,以及容易出现的误用。

第3章介绍了JDK内部对并行程序开发的支持,主要介绍juc(java.util.concurrent)中一些工具的使用方法、各自的特点及它们的内部实现原理。

第4章介绍了在开发过程中可以进行的对锁的优化,也进一步简要描述了Java虚拟机层面对并行程序的优化支持。此外,还花费一定的篇幅介绍了无锁的计算。

第5章介绍了并行程序设计中常见的一些设计模式,以及一些典型的并行算法和使用方法,其中包括重要的Java NIO和AIO的介绍。

第6章介绍了Java 8/9/10为并行计算做的改进,包括并行流、CompletableFuture、StampedLock、LongAdder,以及发布和订阅模式等。

第7章主要介绍了高并发框架Akka的基本使用方法,并使用Akka框架实现了一个简单的粒子群算法,模拟超高并发的场景。

第8章介绍了使用Eclipse进行多线程调试的方法,并演示了通过Eclipse进行多线程调试重现ArrayList的线程不安全问题。

第9章介绍了Jetty,并分析了Jetty的一些关键代码,主要展示它在高并发优化中所做的一些努力,也为读者学会并深入理解高并发带来一些提示和思考。

本书特色

本书的主要特色如下。

1.结构清晰。本书一共9章,总体上循序渐进,逐步提升。每一章都有鲜明的侧重点,有利于读者快速抓住重点。

2.理论结合实战。本书注重实战,书中重要的知识点都安排了代码实例,帮助读者理解。同时也不忘对系统的内部实现原理进行深度剖析。

3.通俗易懂。本书尽量避免采用过于理论化的描述方式,简单的白话文风格贯穿全书,配图基本上为手工绘制,降低了理解难度,并尽量做到读者在阅读过程中少盲点、无盲点。

适合阅读人群

虽然本书力求通俗,但是要通读本书并取得良好的学习效果,要求读者具备基本的Java知识或者一定的编程经验。因此,本书适合以下读者。

● 拥有一定开发经验的Java平台开发人员(Java、Scala、JRuby等)。

● 软件设计师、架构师。

● 系统调优人员。

● 有一定的Java编程基础并希望进一步加深对并行程序的理解的研发人员。

本书的约定和更新

本书在叙述过程中,有如下约定。

● 本书所述的JDK 1.5、JDK 1.6、JDK 1.7、JDK 1.8、JDK 1.9、JDK 1.10分别等同于

JDK 5、JDK 6、JDK 7、JDK 8、JDK 9、JDK 10。

● 如无特殊说明,本书的程序、示例均在JDK 1.8以上环境中运行。

相较前一版,本书的主要更新如下。

1.第3章增加的内容如下。

● 使用JMH进行性能测试。

● CopyOnWriteArrayList ConcurrentLinkedQueue性能测试。

● 使用Guava的RateLimiter限流。

● Guava中对线程池的扩展。

● 介绍JDK中ArrayBlockingQueue的算法。

2.第5章增加的内容如下。

● Guava对Future模式的支持。

3.第6章增加的内容如下。

● 支持timeout的CompletableFuture。

● ConcurrentHashMap在新版本JDK中的增强。

● 发布和订阅模式。

4.增加第9章,主要介绍Jetty多线程优化。从细节入手分析Jetty在多线程并发方面做出的努力和优化,对实践应用具有极强的参考价值。

联系作者

本书的写作过程远比我想象得艰辛,为了让全书能够更清楚、更准确地表达和论述,我经历了很多个不眠之夜,即使现在回想起来,我也忍不住会打个寒战。由于写作水平的限制,书中难免会有不妥之处,望读者谅解。

为此,如果读者有任何疑问或者建议,非常欢迎大家加入QQ群254693571,一起探讨学习中的困难、分享学习经验,我期待与大家一起交流、共同进步。同时,大家也可以关注我的博客http://www.uucode.net/。欢迎大家去博文视点社区下载本书推荐的参考文献。

感谢

本书能够面世,是因为得到了众人的支持。首先,要感谢我的妻子,她始终不辞辛劳、毫无怨言地对我照顾有加,才让我得以腾出大量时间安心工作。其次,要感谢所有编辑为我一次又一次地审稿改错,批评指正,促进本书逐步完善。最后,感谢我的母亲三十年如一日对我的体贴和关心。

葛一鸣

读者服务

轻松注册成为博文视点社区用户(www.broadview.com.cn),您即可享受以下服务:

下载资源:本书如提供示例代码及资源文件,均可在 下载资源 处下载。

提交勘误:您对书中内容的修改意见可在 提交勘误 处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。

与作者交流:在页面下方 读者评论 处留下您的疑问或观点,与作者和其他读者一同学习交流。

页面入口:http://www.broadview.com.cn/35003