同步工具之章節(jié)小結(jié)
1. 前言
通過前面幾個小節(jié)的學(xué)習(xí),相信大家已經(jīng)掌握了不少知識和技巧,本節(jié)我們一起做一個回顧總結(jié)。
2. 內(nèi)容回顧
本章總共 5 個小節(jié),介紹了 5 個典型的同步工具類,分別是 Semaphore、CountDownLatch、CyclicBarrier、Phaser 和 Exchanger 。每一個工具類介紹了基本的用法,并且搭配了編程案例。
3. 工具對比
在介紹每一類工具類時,沒有過多地做彼此之間的對比,為了大家有一個更深刻的認識,下面總結(jié)這些工具類之間的應(yīng)用差異。請看下面表格。
工具類 | 基本概念 | 典型應(yīng)用場景 |
---|---|---|
Semaphore | 計數(shù)信號量,封裝了對某個資源的量化控制操作 | 生產(chǎn)消費關(guān)系中的邏輯控制 |
CountDownLatch | 同步計數(shù)器,封裝了多個子線程和一個控制線程之間的同步邏輯 | 分頭處理任務(wù),最后做總結(jié)性處理 |
CyclicBarrier | 循環(huán)柵欄, 封裝了多個線程在某個時刻達成同步邏輯 | 類似 CountDownLatch |
Phaser | 移相器,封裝了具有多階段且每階段并發(fā)處理的控制邏輯 | 如處理某個具有多階段任務(wù)的計劃 |
Exchanger | 交換者,封裝了一對線程之間的同步交換邏輯 | 如兩個任務(wù)在處理過程中,需互相檢測信息的場合 |
4. 實踐建議
JDK 提供了的這些同步工具類,在功能上或多或少有重疊,我們該怎么加以選擇使用呢?
首先需要對每類工具類的功能徹底理解,然后把握住最簡原則加以選擇。
另外,當我們學(xué)習(xí)了這些工具類之后,在實際應(yīng)用中,應(yīng)該首先想到使用這些工具類,而不是自己造輪子。
至此本章介紹完畢了,希望大家能反復(fù)琢磨,反復(fù)練習(xí),爭取早日掌握,早日體會到這些工具類帶來的便捷。