豆瓣高分Java书籍推荐:不一般的《Java并发编程实战》

豆瓣高分Java书籍推荐:不一般的《Java并发编程实战》

豆瓣评分:9.0

书籍电子版关注私信“书籍”即可获得免费领取方式。

本书深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册。著书的作者都是Java Community Process JSR 166专家组(并发工具)的主要成员,并在其他很多JCP专家组里任职。Brian Goetz有20多年的软件咨询行业经验,并著有至少75篇关于Java开发的文章

首先要说明的是,本书并非,如同中国程序员爱说的,是一本什么修炼内功的书。这本书读完之后,由于没有习题,所以如果不能结合实践两相印证的话,其实对个人的提升是比较有限的。

豆瓣高分Java书籍推荐:不一般的《Java并发编程实战》

此外,非常重要的一点是,Java 1.8 对并发编程有了长足的扩展,尤其是 CompletableFuture 的引入,现在的 Java 并发编程中大量的使用 Latch 和 CompletableFuture,这点书上的介绍是比较不足的。传统的 Executor 框架虽然仍然有广泛的用武之地,但是 Future 类的使用却是比较缺少的了。所以阅读本书的时候,总有一点缺了什么的感觉,还是非常遗憾的。如果 Doug Lea 能就此编写一章来论述他设计 CompletableFuture 的心路历程和一些重要的权衡的话,我觉得本书的时效性会强上不少。

本书的内容而言,我个人是推荐先阅读第 16 章 Java 内存模型的。因为它详细解释了 Java 内存模型的底层需求以及其提供的保证,这些是 Java 的并发模型长成现在这样的底层原因。就像深入到 Erlang 的并发模型必须了解 EVM 为并发做了什么支持一样,要想深入到 Java 的并发模型,就要看看 JMM 是怎么设计的。

豆瓣高分Java书籍推荐:不一般的《Java并发编程实战》

我们知道,程序员对一段代码的假设是,代码像它写的那样执行。这句话看起来是一件理所当然的事情,但是其实暗示着代码“应该”按照它看起来应该那样执行的样子执行,也就是一句之后又一句,顺序、分支或者循环。但是在并发的环境下,情况并非如此。有时一个方法修改某个全局变量时,会有另一个当前线程毫无知觉的线程在同一个方法或者别的方法中修改同一个全局变量。这就是并发编程的难点,很多时候你并想不清楚当前系统正发生着什么。

Java 内存模型给了程序员一个基础的保障,即提供了不同级别的缓存一致性,和约定了指令重排序的原则(Happens-Before 规则)。前者保证不同线程在一定的前提条件下能看到相同的同一个对象的值(很遗憾,由于不同线程对应不同的缓存映像,这一点并不是显然的,甚至在没有其他约束下是显然不同步的),后者保证编译器做底层的激进优化,特别是利用流水线等体系结构层面的技术的时候,程序仍然“像想象中那样执行”。关于这点的详细内容显然留给书中去展开,但是根据我为数不多的面试经验,如果能在考察阶段表现出对 Java 内存模型一定程度的了解,起码能让用人公司认为你是一个乐于深入钻研 Java 并发机制的同学;如果能比较清楚的分析一些常见的同步问题,例如书中介绍的对象发布问题,以及 double check 问题,这样的问题能清晰的分析出来问题点和解决的方法,我相信别人对你的评价不会低于“一个头脑正常的并发程序编写人员”。(这可不容易,有不少人在写并发程序的大多数时候头脑是不清醒的。)

对于其他的部分,关于第四部分的其他内容,例如各种锁类,各种同步类,以及整个第二部分,包括 Executor 框架的介绍,Future 的介绍等等,还有第一部分的第五章关于容器类的介绍,我觉得都有一看的价值,不过大概也就是一看的价值。稍作了解即可,对于这部分的学习和提升主要还是在面临实际问题的时候撞坑和解决,书本上的理论也不超过经验之谈,如果没有相关的经历,怎么看都会觉得没有什么明显错误,但也不知道说来干嘛。

豆瓣高分Java书籍推荐:不一般的《Java并发编程实战》

第一部分基础知识关于线程安全性和对象的共享、组合的介绍,可以看看在研究并发编程的大语境下,专业人员都采用什么术语,大抵都会考虑什么问题。这部分的内容很难说大有裨益但却不可或缺,因为每当你进入一个新的领域的时候,第一件要做的事情总是先搞清楚这个领域研究的问题是什么,研究的对象是什么,话是怎么说的,有什么基础的共识和结论。

豆瓣高分Java书籍推荐:不一般的《Java并发编程实战》

第三部分关于性能的分析,由于还未有专门的相关体验,权当小说看。测试方面,关于正确性的部分,实际上就是通过阻塞的方法给出某个确定的执行顺序来检验;关于性能和其他方面的测试,暂无相关经验,权当小说读。

豆瓣高分Java书籍推荐:不一般的《Java并发编程实战》

这本书名为《Java并发编程实战》有些抹杀了它的价值,其中并非只讲述了Java的多线程设施,对一般的并发编程的rationale也有相当透彻的阐述。之前看过各种线程库,pThread, Boost Thread, Java Thread, Qt Thread,感觉Java的线程模型还是相对比较清晰的。只要能读懂一点Java的朋友,都可以考虑用这本书来作为并发编程的入门书。

有兴趣阅读《Java并发编程实战》的朋友们加微信号 bjmsb12 获取完整书籍电子版获取学习。

豆瓣高分Java书籍推荐:不一般的《Java并发编程实战》

猜你喜欢

转载自blog.csdn.net/JavaBye/article/details/107518832