同步工具之章节小结
1. 前言
通过前面几个小节的学习,相信大家已经掌握了不少知识和技巧,本节我们一起做一个回顾总结。
2. 内容回顾
本章总共 5 个小节,介绍了 5 个典型的同步工具类,分别是 Semaphore、CountDownLatch、CyclicBarrier、Phaser 和 Exchanger 。每一个工具类介绍了基本的用法,并且搭配了编程案例。
3. 工具对比
在介绍每一类工具类时,没有过多地做彼此之间的对比,为了大家有一个更深刻的认识,下面总结这些工具类之间的应用差异。请看下面表格。
工具类 | 基本概念 | 典型应用场景 |
---|---|---|
Semaphore | 计数信号量,封装了对某个资源的量化控制操作 | 生产消费关系中的逻辑控制 |
CountDownLatch | 同步计数器,封装了多个子线程和一个控制线程之间的同步逻辑 | 分头处理任务,最后做总结性处理 |
CyclicBarrier | 循环栅栏, 封装了多个线程在某个时刻达成同步逻辑 | 类似 CountDownLatch |
Phaser | 移相器,封装了具有多阶段且每阶段并发处理的控制逻辑 | 如处理某个具有多阶段任务的计划 |
Exchanger | 交换者,封装了一对线程之间的同步交换逻辑 | 如两个任务在处理过程中,需互相检测信息的场合 |
4. 实践建议
JDK 提供了的这些同步工具类,在功能上或多或少有重叠,我们该怎么加以选择使用呢?
首先需要对每类工具类的功能彻底理解,然后把握住最简原则加以选择。
另外,当我们学习了这些工具类之后,在实际应用中,应该首先想到使用这些工具类,而不是自己造轮子。
至此本章介绍完毕了,希望大家能反复琢磨,反复练习,争取早日掌握,早日体会到这些工具类带来的便捷。