具体描述
Java 7在并发编程方面,带来了很多令人激动的新功能,这将使你的应用程序具备更好的并行任务性能。
《Java 7并发编程实战手册》是Java 7并发编程的实战指南,介绍了Java 7并发API中大部分重要而有用的机制。全书分为9章,涵盖了线程管理、线程同步、线程执行器、Fork/Join框架、并发集合、定制并发类、测试并发应用等内容。全书通过60多个简单而非常有效的实例,帮助读者快速掌握Java 7多线程应用程序的开发技术。学习完本书,你可以将这些开发技术直接应用到自己的应用程序中。
《Java 7并发编程实战手册》适合具有一定Java编程基础的读者阅读和学习。如果你是一名Java开发人员,并且想进一步掌握并发编程和多线程技术,并挖掘Java 7并发的新特性,那么本书是你的合适之选。
作者简介
Javier Fernández González 是一名有着超过 10 年 Java 技术经验的软件架构师。他曾过担任过教师,研究员,程序员和分析员,现在是 Java 项目、特别是 J2EE 相关项目的架构师。在担任教师期间,他在 Java 、 J2EE 和 Struts 框架上有超过 1,000 个小时的教学时间。当研究员时,他曾在信息检索领域,用 Java 开发应用程序来处理大量的数据,并且是一些期刊文章及和会议演示的合作者。近些年来,他在不同的领域(比如公共行政,保险,医疗保健,交通,等等)为不同的客户开发 J2EE Web 应用程序。目前,他在欧洲最大的咨询公司(Capgemini,凯捷)担任软件架构师,为保险公司开发和维护应用程序。
目录信息
1.1 简介 1
1.2 线程的创建和运行 2
1.3 线程信息的获取和设置 5
1.4 线程的中断 9
1.5 线程中断的控制 11
1.6 线程的休眠和恢复 15
1.7 等待线程的终止 17
1.8 守护线程的创建和运行 20
1.9 线程中不可控异常的处理 24
1.10 线程局部变量的使用 26
1.11 线程的分组 30
1.12 线程组中不可控异常的处理 34
1.13 使用工厂类创建线程 37
第2章 线程同步基础 41
2.1 简介 41
2.2 使用synchronized实现同步方法 42
2.3 使用非依赖属性实现同步 47
2.4 在同步代码中使用条件 53
2.5 使用锁实现同步 57
2.6 使用读写锁实现同步数据访问 61
2.7 修改锁的公平性 65
2.8 在锁中使用多条件(Multiple Condition) 69
第3章 线程同步辅助类 77
3.1 简介 77
3.2 资源的并发访问控制 78
3.3 资源的多副本的并发访问控制 83
3.4 等待多个并发事件的完成 87
3.5 在集合点的同步 91
3.6 并发阶段任务的运行 100
3.7 并发阶段任务中的阶段切换 109
3.8 并发任务间的数据交换 115
第4章 线程执行器 120
4.1 简介 120
4.2 创建线程执行器 121
4.3 创建固定大小的线程执行器 126
4.4 在执行器中执行任务并返回结果 129
4.5 运行多个任务并处理第一个结果 134
4.6 运行多个任务并处理所有结果 139
4.7 在执行器中延时执行任务 144
4.8 在执行器中周期性执行任务 147
4.9 在执行器中取消任务 151
4.10 在执行器中控制任务的完成 154
4.11 在执行器中分离任务的启动与结果的处理 158
4.12 处理在执行器中被拒绝的任务 164
第5章 Fork/Join框架 168
5.1 简介 168
5.2 创建Fork/Join线程池 170
5.3 合并任务的结果 178
5.4 异步运行任务 187
5.5 在任务中抛出异常 194
5.6 取消任务 199
第6章 并发集合 206
6.1 简介 206
6.2 使用非阻塞式线程安全列表 207
6.3 使用阻塞式线程安全列表 212
6.4 使用按优先级排序的阻塞式线程安全列表 215
6.5 使用带有延迟元素的线程安全列表 221
6.6 使用线程安全可遍历映射 226
6.7 生成并发随机数 231
6.8 使用原子变量 233
6.9 使用原子数组 237
第7章 定制并发类 242
7.1 简介 242
7.2 定制ThreadPoolExecutor类 243
7.3 实现基于优先级的Executor类 248
7.4 实现ThreadFactory接口生成定制线程 252
7.5 在Executor对象中使用ThreadFactory 257
7.6 定制运行在定时线程池中的任务 259
7.7 通过实现ThreadFactory接口为Fork/Join框架生成定制线程 267
7.8 定制运行在Fork/Join框架中的任务 273
7.9 实现定制Lock类 278
7.10 实现基于优先级的传输队列 284
7.11 实现自己的原子对象 294
第8章 测试并发应用程序 300
8.1 简介 300
8.2 监控Lock接口 301
8.3 监控Phaser类 305
8.4 监控执行器框架 309
8.5 监控Fork/Join池 312
8.6 输出高效的日志信息 317
8.7 使用FindBugs分析并发代码 323
8.8 配置Eclipse调试并发代码 327
8.9 配置NetBeans调试并发代码 330
8.10 使用MultithreadedTC测试并发代码 335
· · · · · · (收起)
读后感
P151 Finally, you can configure the behavior of the ScheduledThreadPoolExecutor class when you call the shutdown() method and there are pending tasks waiting for the end of their delay time. The default behavior is that those tasks will be executed despite ...
后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后...
后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后...
上手很简单,给的例子由浅入深,很容易理解。 虽然没有中文版,还是挺简单的。 一上来看《Java Concurrency in Practice》觉得有些难度的话,可以从这本开始,这两本书再配上源代码,Java并发入门应该没啥问题了。
后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后悔啊 应该看原版后...
用户评价
这本书的排版和代码示例的清晰度是值得称赞的,但当我深入到关于JUC包中那些鲜为人知或者不常使用的类时,我发现作者的讲解力度明显下降了。例如,对于`CountDownLatch`和`CyclicBarrier`的底层实现差异,它只是简单地罗列了API的功能,却没有深入分析在资源竞争激烈时,哪一个在性能上更具优势,或者说,它们在JVM的竞争策略上存在哪些细微差别。更令人遗憾的是,书中对并发编程中至关重要的“并发安全的数据结构”的介绍,似乎也停留在教科书的层面,比如仅仅提及`ConcurrentHashMap`,但对于其在Java 7到Java 8的演进过程中,如何从分段锁过渡到CAS和红黑树(Treeifying)的性能考量,介绍得不够细致。如果一本“实战手册”不能把这些版本的迭代和背后的工程决策讲清楚,那么它就少了一份历史的厚重感和实战的指导性。阅读体验上,总感觉作者在最关键的、需要深入挖掘的“为什么会这样”的地方,选择了更安全、更浅显的路径。
这本书绝对是给那些想要深入理解并发编程核心机制的人准备的,但它似乎更侧重于展示理论框架的宏大叙事,而不是手把手的实践指导。我花了大量时间试图在书中找到关于如何构建一个健壮、高效的线程池的实际代码示例,或者至少是一些关于不同同步工具(比如`ReentrantLock`与`Semaphore`的底层交互)的深入剖析。然而,我发现书中的大量篇幅被用来阐述Java内存模型(JMM)的哲学思想,这固然重要,但对于一个急需解决当前项目中死锁问题的工程师来说,这有点像在讨论哲学而不是修理机器。它更像是一部关于并发理论的百科全书,而不是一本实战手册。我期待看到更多关于如何使用JDK 8+的新特性来简化并发代码的技巧,比如`CompletableFuture`的链式调用最佳实践,但这些内容在书中显得非常单薄。整体阅读体验更偏向于学术研究,对于追求快速解决实际生产问题的开发者来说,可能需要搭配其他更注重实战的代码教程才能达到理想的学习效果。这使得“实战手册”这个书名在某种程度上显得有些名不副实,它更像是一本高级并发理论的导论。
坦白说,我从这本书中感受到的“实战”味道不足,更像是一份详尽的Java规范解读指南,只不过焦点集中在了并发部分。当我尝试寻找书中关于如何进行高并发场景下的性能调优时,比如如何使用JFR(Java Flight Recorder)来诊断线程上下文切换的开销,或者如何通过分析GC日志来理解并发操作对堆内存分配的影响,我发现这些内容几乎缺失了。书中对并发异常的处理,比如如何优雅地从中断中恢复,或者如何设计具有幂等性的并发操作,讲解得非常理论化,缺乏真实的、复杂的业务场景模拟。这使得读者在合上书本后,依然需要面对一个棘手的现实问题:我的应用因为高并发而变得不稳定,我该从何处入手?这本书提供了一张精美的地图,但没有告诉我如何操作探照灯去发现隐藏的陷阱。它构建了一个完美的并发理论世界,但这个世界和我们每天使用的、充满意外的生产环境之间,似乎隔着一道难以逾越的鸿沟。
我个人对并发编程的理解是从C++和Go语言背景转过来的,因此我非常期待这本书能深入对比Java与其他主流并发模型之间的优劣。然而,本书似乎完全将自己封闭在JVM的生态圈内,几乎没有提及例如C++的原子操作库或Go语言的Goroutine模型是如何在语言层面解决我们正在用Java `Lock`和`Future`解决的问题的。这种“自洽”的叙事风格虽然保证了对Java特定实现的深度,却牺牲了广阔的视野。对于希望提升架构思维的读者而言,缺乏这种跨语言的比较视角,会让学习曲线显得有些孤立。例如,当讨论到`StampedLock`的读写分离优势时,如果能将其与Rust的`RwLock`进行对比,指出Java实现上的特定开销或限制,那将是极具价值的。目前的版本,更像是一份为Java初学者准备的“官方指南”,而非为资深工程师准备的“进阶参考”。
这本书在讲解并发控制原语时,那种严谨到近乎枯燥的程度,让人不禁怀疑作者是不是在努力通过增加解释的层数来填充篇幅。对于一个已经熟悉`synchronized`和`volatile`基础用法的开发者来说,阅读这本书的初级章节感觉像是在进行知识的“去卷化”,把已经内化的概念重新拆解成最基本的逻辑单元。我希望看到的不是对`volatile`保证可见性这个事实的反复论证,而是它在不同JVM实现下的微小差异,或者在处理特定硬件架构时的性能权衡。更令人困惑的是,对于一些高级并发设计模式,比如Actor模型或者响应式编程范式在Java生态中的落地,书中也只是点到为止,仿佛这些是“题外话”。这种处理方式使得全书的密度很不均匀,有些地方详尽得让人昏昏欲睡,而另一些关键的实战点却一带而过,留下了大量的空白需要读者自行去其他地方填补。它似乎更关心概念的完整性,而不是工程的实用性。
后面倒数两章都讲的不错,ThreadFactory的扩展,优先级的生产者消费者线程池,作为一本cookbook来说不错了。
讲了Java7并发工具类的用法,示例比较浅显易懂,没有什么深度。
内容很一般,但比较规整,技术书籍可能大都这样吧。
还不错,挺全面的。
很详细的介绍了java并发api,都附有代码。很不错的入门书籍。