同步工具之章节小结

1. 前言

通过前面几个小节的学习,相信大家已经掌握了不少知识和技巧,本节我们一起做一个回顾总结。

2. 内容回顾

本章总共 5 个小节,介绍了 5 个典型的同步工具类,分别是 Semaphore、CountDownLatch、CyclicBarrier、Phaser 和 Exchanger 。每一个工具类介绍了基本的用法,并且搭配了编程案例。

3. 工具对比

在介绍每一类工具类时,没有过多地做彼此之间的对比,为了大家有一个更深刻的认识,下面总结这些工具类之间的应用差异。请看下面表格。

工具类 基本概念 典型应用场景
Semaphore 计数信号量,封装了对某个资源的量化控制操作 生产消费关系中的逻辑控制
CountDownLatch 同步计数器,封装了多个子线程和一个控制线程之间的同步逻辑 分头处理任务,最后做总结性处理
CyclicBarrier 循环栅栏, 封装了多个线程在某个时刻达成同步逻辑 类似 CountDownLatch
Phaser 移相器,封装了具有多阶段且每阶段并发处理的控制逻辑 如处理某个具有多阶段任务的计划
Exchanger 交换者,封装了一对线程之间的同步交换逻辑 如两个任务在处理过程中,需互相检测信息的场合

4. 实践建议

JDK 提供了的这些同步工具类,在功能上或多或少有重叠,我们该怎么加以选择使用呢?
首先需要对每类工具类的功能彻底理解,然后把握住最简原则加以选择。
另外,当我们学习了这些工具类之后,在实际应用中,应该首先想到使用这些工具类,而不是自己造轮子

至此本章介绍完毕了,希望大家能反复琢磨,反复练习,争取早日掌握,早日体会到这些工具类带来的便捷。