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