Java多线程编程实战指南(设计模式篇)
  • 推荐0
  • 收藏10
  • 浏览2.1K

Java多线程编程实战指南(设计模式篇)

黄文海 (作者) 

  • 丛  书:Java多线程编程实战系列
  • 书  号:978-7-121-27006-2
  • 出版日期:2015-10-14
  • 页  数:284
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:付睿
随着CPU 多核时代的到来,多线程编程在充分利用计算资源、提高软件服务质量方面扮演了越来越重要的角色。而解决多线程编程中频繁出现的普遍问题可以借鉴设计模式所提供的现成解决方案。然而,多线程编程相关的设计模式书籍多采用C++作为描述语言,且书中所举的例子多与应用开发人员的实际工作相去甚远。本书采用Java(JDK1.6)语言和UML 为描述语言,并结合作者多年工作经历的相关实战案例,介绍了多线程环境下常用设计模式的来龙去脉:各个设计模式是什么样的及其典型的实际应用场景、实际应用时需要注意的事项以及各个模式的可复用代码实现。
本书从理论到实战,用生活化的实例和通俗易懂的语言全面介绍Java多线程编程的“三十六计”多线程设计模式
推荐序

欣闻文海兄弟的《Java 多线程编程实战指南》一书即将出版,心里感到非常激动和兴奋。与文海相识于2014 年,某一天InfoQ 中文站的运营编辑给我转发了一封读者投稿的邮件,标题是《Java 多线程编程模式实战指南之Active Object 模式》。读完了稿件后立刻决定发布到InfoQ中文站上,因为这篇文章无论从内容选取、技术方向还是文字水平都是我见过的上乘之作。文章发布后也收到了很多读者的反馈,而该文章的作者正是文海。此后,文海又在InfoQ 中文站上连载了多篇关于Java 多线程设计模式相关的文章,均获得了不错的读者评价。
本书正是文海多年来工作经验的总结之作。众所周知,目前Java 并发领域的经典好书大部分都是外版作品。不过值得欣喜的是,近一两年来,也有一些不错的国内开发者开始编写这个领域的图书,口碑也相当不错。文海的这部著作针对Java 并发编程但又不局限于这个领域,它将Java 多线程编程与设计模式这两大主题有机地结合到了一起。实际上,目前市场上虽然既有关于Java 多线程编程的图书,也有关于设计模式的图书,但这两类图书内容之间却难以产生交集。介绍Java 多线程的图书会专门讲解多线程编程的方方面面,而介绍设计模式的图书一般又会以经典的23 种设计模式为蓝本,同时辅以一些简单的代码示例进行解读,难以让读者真正领会设计模式在实际开发中所起的作用。这本《Java 多线程编程实战指南》正是这两个领域的集大成者,它不仅深入透彻地分析了Java 多线程编程的方方面面,还将其与设计模式有机地结合到了一起,形成了主动对象模式、两阶段终止模式、生产者/消费者模式、流水线模式、线程池模式等对实际项目开发会起到积极指导作用的诸多模式。可以这么说,本
书不仅会向大家介绍Java 多线程开发的难点与重点,还会探讨在某些场景下该使用哪种模式,这样做会给项目带来什么好处。从这个意义上来说,本书是Java 多线程开发与设计模式理论的集大成者,相信会给广大的Java 开发者带来切实的帮助。
目前已经是多核普及的时代,程序员也一定要编写面向多核的代码。虽然传统的SSH(特指Struts+Spring+Hibernate)依然还在发挥着重要的作用,但不得不说的是,作为一名有追求的Java 开发者,眼光不应该局限于此。每一名有理想的Java 开发者都应该系统学习有关多线程编程的知识,这不仅涉及程序语言与库的学习,还需要了解现代硬件体系架构(如CPU、缓存、内存等),同时辅以恰当的设计模式,这样才能在未来游刃有余、得心应手。
虽然本人已经出版过多本技术图书,但为别人的书写序还是第一次。因此,在写这篇序之前我通读了该书的全部章节。事实也印证了之前的猜想,文海的这本书绝对是他本人的心血结晶之作,诸多的实际经验相信会给你带来不一样的感受。诚然,目前Java 开发相关的技术图书已然汗牛充栋,但我相信,这本《Java 多线程编程实战指南》应该是每一个对代码有追求、对模式有见地的读者书架上不可或缺的一本书。
InfoQ 中文站Java 主编:张龙
2015 年9 月14 日于北京

前言

随着现代CPU 的生产工艺从提升CPU 主频频率转向多核化,即在一块芯片上集成多个CPU内核(Core),以往那种靠CPU 自身处理能力的提升所带来的软件计算性能提升的“免费午餐”不复存在。在此背景下,多线程编程在充分利用计算资源、提高软件服务质量方面扮演了越来越重要的角色。然而,多线程编程并非一个简单地使用多个线程进行编程的数量问题,其又有自身的问题。好比俗话说“一个和尚打水喝,两个和尚挑水喝,三个和尚没水喝”,简单地使用多个线程进行编程可能导致更加糟糕的计算效率。
设计模式相当于软件开发领域的“三十六计”,它为特定背景下反复出现的问题提供了一般性解决方案。多线程相关的设计模式为我们恰当地使用多线程进行编程并达到提升软件服务质量这一目的提供了指引和参考。当然,设计模式不是菜谱。即便是菜谱,我们也不能指望照着菜谱做就能做出一道美味可口的菜肴,但我们又不能因此而否认菜谱存在的价值。
可惜的是,国外与多线程编程相关的设计模式书籍多数采用C++作为描述语言,且书中所举的例子又多与应用开发人员的实际工作经历相去甚远。本书作为国内第一本多线程编程相关设计模式的原创书籍,希望能够为Java 开发者普及多线程相关的设计模式开一个头。
本书采用Java(JDK1.6)语言和UML(Unified Modeling Language)为描述语言,并结合作者多年工作经历的相关实战案例,介绍了多线程环境下常用设计模式的来龙去脉:各个设计模式是什么样的及其典型的实际应用场景、实际应用时需要注意的相关事项以及各个模式的可复用代码实现。
本书第1 章对多线程编程基础进行了回顾,虽然该章讲的是基础,但重点仍然是强调“实战”。所谓“温故而知新”,有一定多线程编程基础、经验的读者也不妨快速阅读一下本章,说不定有新的收获。
本书第3 章到第14 章逐一详细讲解了多线程编程相关的12 个常用设计模式。针对每个设计模式,相应章节会从以下几个方面进行详细讲解。
模式简介。这部分简要介绍了相应设计模式的由来及核心思想,以便读者能够快速地对相应设计模式有个初步认识。
模式的架构。这部分会从静态(类及类与类之间的结构关系)和动态(类与类之间的交互)两个角度对相应设计模式进行详细讲解。模式架构分别使用UML 类图(Class Diagram)和序列图(Sequence Diagram)对模式的静态和动态两个方面进行描述。
实战案例解析。在相应设计模式架构的基础上,本部分会给出相关的实战案例并对其进行解析。不同于教科书式的范例,实战案例强调的是“实战”这一背景。因此实战案例解析中,我们会先提出实际案例中我们面临的实际问题,并在此基础上结合相应设计模式讲解相应设计模式是如何解决这些问题的。实战案例解析中我们会给出相关的Java 代码,并讲解这些代码与相应设计模式的架构间的对应关系,以便读者进一步理解相应设计模式。为了便于读者进行实验,本书给出的实战案例代码都力求做到可运行。实战案例解析有助于读者进一步理解相应的设计模式,并体验相应设计模式的应用场景。建议读者在阅读这部分时先关注重点,即实战案例中我们要解决哪些问题,相应设计模式又是如何解决这些问题的,以及实战案例的代码与相应设计模式的架构间的对应关系。而代码中其与设计模式非强相关的细节则可以稍后关注。
模式的评价与实现考量。这部分会对相应设计模式在实现和应用过程中需要注意的一些事项、问题进行讲解,并讨论应用相应设计模式所带来的好处及缺点。该节也会讨论相应设计模式的典型应用场景。
可复用实现代码。这部分给出相应设计模式的可复用实现代码。编写设计模式的可复用代码有助于读者进一步理解相应设计模式及其在实现和应用过程中需要注意的相关事项和问题,也便于读者在实际工作中应用相应设计模式。
Java 标准库实例。考虑到Java 标准库的API 设计过程中已经应用了许多设计模式,本书尽可能地给出相应设计模式在Java API 中的应用情况。
相关模式。设计模式不是孤立存在的,一个具体的设计模式往往和其他设计模式之间存在某些联系。这部分会描述相应设计模式与其他设计模式之间存在的关系。这当中可能涉及GOF 的设计模式,这类设计模式并不在本书的讨论范围之内。有需要的读者,请自行参考相关书籍。
本书的源码可以从http://github.com/Viscent/javamtp 下载或博文视点官网http://www.broadview.com.cn 相关图书页面下载。

目录

目录 阅读
第1章 Java多线程编程实战基础
第2章 设计模式简介
第3章 Immutable Object(不可变对象)模式
第4章 Guarded Suspension(保护性暂挂)模式
第5章 Two-phase Termination(两阶段终止)模式
第6章 Promise(承诺)模式
第7章 Producer-Consumer(生产者、消费者)模式
第8章 Active Object(主动对象)模式
第9章 Thread Pool(线程池)模式
第10章 Thread Specific Storage(线程特有存储)模式
第11章 Serial Thread Confinement(串行线程封闭)模式
第12章 Master-Slave(主仆)模式
第13章 Pipeline(流水线)模式
第14章 Half-sync、Half-async(半同步、半异步)模式
第15章 模式语言

读者评论

电子书版本

  • Epub
  • Mobi

同系列书

相关图书

Python一行流:像专家一样写代码

Christian Mayer (作者) 苏丹 (译者)

本书专注于从初学迈向进阶的Python编码技术:如何像专家一样写出优雅、准确、简洁高效的Python 单行代码;阅读任意一行Python 代码时,如何系统性地对...

¥89.00

剑指Offer(专项强化版):数据结构与算法名企面试题精讲

何海涛 (作者)

本书全面、系统地总结了在准备程序员面试过程中必备的数据结构与算法。本书首先详细讨论整数、数组、链表、字符串、哈希表、栈、队列、二叉树、堆和前缀树等常用的数据结构...

¥89.00

C++服务器开发精髓

张远龙 (作者)

本书从操作系统原理角度讲解进行C++服务器开发所需掌握的技术栈。全书总计9章,第1~2章讲解C++ 11/14/17新标准中的常用特性、新增类库,以及C++开发...

 

PHP编程(第4版)

Rasmus Lerdorf(拉斯马斯·勒多夫), Kevin Tatroe(凯文·塔特罗), Peter MacIntyre(彼得·麦金太尔) (作者) 卢涛 (译者)

PHP是一种被广泛使用的Web编程语言,它简单易用,而且与时俱进,不断进化,提升性能。本书基于PHP 7.4,深入介绍 PHP编程技术,涵盖了 PHP 所有基本...

¥109.00

深入理解Spring Cloud与实战

方剑 (作者)

本书共分10章,主要介绍Spring Cloud各个核心组件的设计原理,以及目前流行的Spring Cloud Alibaba和 Netflix组件,并且剖析S...

¥106.00

基于Kotlin的Spring Boot微服务实战

袁康 (作者)

本书介绍了Kotlin在Spring Boot微服务开发中的实践,并使用Kotlin作为开发语言,介绍了函数式编程思想、Kotlin的语法、Kotlin在常用中...

¥69.30