Java Concurrency in Practice
432 页
Chinese
PDF
4.5

Java Concurrency in Practice

Java Concurrency in Practice

作者:

年份:

简介:

引言

《Java Concurrency in Practice》(作者:Brian Goetz、Tim Peierls、Joshua Bloch 等)一书,毫不夸张地说,是 Java 多线程编程的圣经。该书于 2006 年出版,至今仍是 Java 生态系统中关于并发编程最权威、最深入的知识来源。尽管自出版以来已过去近二十年,但书中描述的基本原则并未过时:Java 内存模型 (JMM)、可见性、原子性、有序性问题,以及安全发布对象的模式,至今仍然适用。

本书并非零基础 Java 入门读物——它要求读者熟练掌握 Java 语言并具备基本的线程理解。然而,正是这本书能将开发者从“线程使用者”转变为真正的专家,使其能够设计出可靠、可扩展且线程安全的应用程序。

本书内容

《Java Concurrency in Practice》涵盖了 Java 并行编程的所有关键方面——从底层同步机制到 java.util.concurrent 包中的高级抽象。本书结构逻辑清晰:首先解释多线程的基本问题(竞态条件、死锁、可见性问题),然后介绍解决这些问题的工具——synchronized、volatile、final、原子变量、ReentrantLock 锁、信号量、屏障。书中还专门用章节讨论了多线程代码的测试、性能和可扩展性,以及诸如 Fork-Join 和 CompletionService 等高级主题。

本书特别关注 Java 内存模型 (JMM)——理解 JMM 能让开发者避免与指令重排序和数据缓存相关的难以察觉的错误。书中包含大量“正确”和“错误”代码示例,使内容直观且实用。

适合读者

本书面向有经验的 Java 开发者,他们已接触过多线程并希望系统化自己的知识。本书对以下人群尤其有用:

  • 服务器端应用程序开发者(Web 服务、请求处理、任务队列);
  • 高负载系统和低延迟应用程序的专家;
  • 设计可扩展系统的架构师;
  • 准备技术面试(尤其是 FAANG 公司)的人;
  • Java 课程的讲师和作者。

对于初学者来说,本书可能显得较难——建议先通过其他资料(例如 Bruce Eckel 的《Java 编程思想》或 Oracle 官方教程)掌握多线程基础知识。

读者将学到什么

  • 多线程的主要问题:竞态条件、死锁、饥饿、优先级反转。
  • 线程安全:如何设计在多个线程访问时仍能正确运行的类。
  • Java 内存模型 (JMM):happens-before 规则、可见性、原子性和有序性保证。
  • 安全发布对象:如何使对象对其他线程可见而不破坏完整性。
  • 同步工具:synchronized、volatile、ReentrantLock、ReadWriteLock、StampedLock。
  • 原子类:AtomicInteger、AtomicReference、AtomicLong、AtomicReferenceFieldUpdater。
  • 线程池和 Executor:ThreadPoolExecutor、ScheduledThreadPoolExecutor、ForkJoinPool。
  • 多线程集合:ConcurrentHashMap、CopyOnWriteArrayList、BlockingQueue、ConcurrentLinkedQueue。
  • 多线程代码测试:如何编写能发现竞态和死锁的测试(包括使用 Thread.yield() 和同步原语)。

推荐