- 实战Java高并发程序设计(第2版)
- 葛一鸣
- 1863字
- 2020-08-27 22:26:25
前言
关于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