购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

前言

为什么写这本书

在我的第一本书《Java高并发编程详解:多线程与架构设计》出版之后,我随即开始了第二本书《Java高并发编程详解:深入理解并发核心库》的写作。这本书作为第一本书的延续,主要内容将围绕Java并发包的使用场景展开;同时还增加了JMH基准测试工具的内容(目前,最新的JDK版本中已经引入了该工具,并作为标准库之一发布);引入了Java 8 Stream的相关内容,尤其是还分析了与高并发相关的并行流;在本书的最后还介绍了性能度量工具Metrics(该类库目前已经成为业界实质上的度量标准,很多开源系统、商业软件中都会采用它)。

如果说我写作第一本书只是一次偶然性的尝试,那么这本书的写作则是一次必然性的使命,是对读者和出版社的一个交代与承诺。为了使得Java高并发编程的相关内容尽可能系统化和完善,必须完成对并发包的介绍。这里,我要向伟大的Doug Lea大师致敬,由于他孜孜不倦的努力、精益求精的敬业态度, Java程序员才能以较低的成本和相对安全的方式来处理非常复杂的高并发多线程场景。

本书中的所有内容都来源于我的网络视频课程。每一套课程推出后都在交流群中引起热烈讨论,我将这些讨论、学习者提出的疑惑以及自己对内容的重新思考全部融入本书中,以使本书中所涉及的知识点尽可能完善与成熟。

读者对象

■ 计算机相关专业的在校学生

■ Java开发工程师

■ 从事Java系统架构的架构师

■ 使用Java作为开发语言的公司与组织

■ 开设Java课程的专业院校

■ 开设Java课程的培训机构

如何阅读本书

本书共7章,逻辑上可分为四部分。第一部分(第1章)详细介绍了JMH(Java Micro benchmark Harness)基准测试工具的使用细节。该工具是由Oracle JVM开发团队相关成员开发的,借助它,开发者将能足够了解自己所编写的程序代码,以及程序在运行期的精确性能表现。在本书的其他章节中,我们对API之间的性能进行对比时主要也是依赖于该工具,因此在学习本书的其他章节之前,最好能够先掌握该部分内容。笔者在此强烈推荐开发者将JMH纳入自己日常的“兵器库”中,以便随时随地使用。

第二部分(第2~5章)主要围绕Java并发包进行展开,内容包括:Java的原子类型及其底层原理(第2章);Java的并发工具集(第3章),其中还穿插了Google Guava的部分内容;Java的并发容器(第4章),包括阻塞队列BlockingQueue和并发容器等内容;Java的ExecutorService(第5章),以及Future家族成员的详解。

第三部分(第6章)主要介绍自Java 8引入的Stream,并且重点解释了具备高并发能力的并行流原理,以及如何自定义并行流等相关内容。

第四部分(第7章)主要介绍Metrics这个比较小巧的度量工具集。目前Metrics已经成为事实上的度量标准,在很多开源软件、框架和平台中都能看到对它的使用,比如Apache的Kafka、Spark、Storm、Spring Cloud等都是使用Metrics作为系统运行性能指标收集的手段。

勘误和支持

由于作者的水平有限,写作时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果你在阅读的过程中发现有任何问题,都欢迎将宝贵的意见发送到我的个人邮箱532500648@qq.com。我真挚地期待着你的建议和反馈,由于个人时间有限,在反馈较多的情况下,如果不能第一时间回复你的邮件还望海涵。

致谢

首先,我要感谢我的父亲,即使我早已成年,但在父亲的心里我仍是个孩子,隔三差五地提醒我注意休息,按时吃饭,我每到一个新城市,他都会关注这个城市的天气预报。作为一个七十多岁的老人,自从得知我炒股之后,他甚至开始关注股市的涨跌,生怕大盘不好时我会想不开,真是可怜天下父母心。人到中年回到家中,可以痛痛快快地喊一声“爸”,这已经是老天对我最大的善意了。

感谢我的妻子照顾我的生活,打理家里的琐事,在小孩的养育中承担了太多的责任,将我们两岁的双胞胎宝宝培养得如此暖心和乖巧,使得我有更多的精力和时间投入事业之中。感谢我的妻子的支持和理解,感谢你倾心倾力的付出。

感谢我家的双胞胎宝贝汪子敬、汪子兮兄妹,你们的加入让整个家庭变得更加温暖与温馨,为我们这个家带来欢乐。希望时间慢点走,这样我就可以更多地与你们一起嬉戏、举高高、骑大马、打地鼠、躲猫猫……无论是在路途中还是在工作休息时,你们的视频、照片、欢声与笑语填充着我所有的碎片时间。

感谢徐景辉(东软集团移动互联网研发部技术总监)一如既往地为我提供帮助,在我的职业生涯中,你一直作为我的导师和榜样,给我启迪,给我思路。感谢你继续为我的新书写推荐序。

感谢Andrew Davidson(定居在香港的澳大利亚人,OSL公司首席技术官)在写作本书的过程中为我提供宝贵的建议和相关的资料,你对我的每次求助都是有求必应,能够耐心地听我用蹩脚的英语表达我遇到的问题。感谢你再次抽出宝贵的个人时间为本书写推荐序。

感谢Srimanth Rudraraju(印度裔的英国人,EY安永金融服务咨询部云总监)提出的宝贵建议,当我将部分章节翻译成英文版本发送给你审阅时,你不仅耐心地读完,而且与我讨论其中的一些细节,还提出了你的看法。同样感谢你为本书写推荐序。在与你共事的那段日子里,你旺盛的精力和强大的脑容量令我印象深刻。

感谢Igal(来自美国加州,软件架构师,Apache软件基金会成员,开源软件Tomcat PMC成员,出版了多本图书,发表了多篇论文,拥有个人专利发明,Stack overflow的贡献者)。因在Stack overflow社区对相关问题进行讨论,得以与你相识,感谢你为我答疑解惑,同时感谢你耐心地阅读本书翻译成英文版的部分章节,并为本书写推荐序。

感谢我所在的公司,感谢我所在的团队,如此优秀的你们在工作中给了我很多支持和帮助,与你们共事我很荣幸,你们教会了我很多,也帮我分担了很多,感谢你们。

谨以此书,献给我最亲爱的家人,以及众多热爱Java开发的朋友们。

汪文君(Alex Wang)
2020年5月于兰州 vxWdodfV51KNWBQvmP19aw/RGDNzE9EKVuj8W7qNv84YpiI0FmYkn2i6Lsvh5jI1

点击中间区域
呼出菜单
上一章
目录
下一章
×