J U C並發包梳理與補充

2021-09-28 11:51:03 字數 1195 閱讀 1973

併發工具類 tools

執行緒執行器 executor

鎖 locks

在不同的地方學習了許多和併發相關的工具或者類並總結在了不同的博文中,這裡做乙個總的關係梳理並進行相關的補充,首先來看下 j.u.c 包下的分類:

主要分為如下幾個部分:

執行緒執行器 executor 及其執行緒池實現類

鎖 locks

原子變數類 atomic

併發工具類 tools

併發集合 collections

核心

atomic包裡一共提供了12個類,屬於4種型別的原子更新方式,分別是原子更新基本型別,原子更新陣列,原子更新引用和原子更新屬性,atomic包裡的類基本都是使用unsafe實現的包裝類。

更新基本型別(atomicinteger)

更新陣列類(atomicintegerarray)

blockingqueue主要用於生產者-消費者模式,在多執行緒場景時生產者執行緒在佇列尾部新增元素,而消費者執行緒則在佇列頭部消費元素,這樣可達到任務的生產和消費進行隔離的目的

根據底層實現的不同,我們可以劃分出多個blocking queue的子類:

閉鎖 countdownlatch、柵欄 cyclicbarrier、訊號量 semaphore 可以參考:j.u.c

交換器exchanger

交換器主要用於執行緒之間進行資料交換,它提供乙個同步點,在這個同步點,兩個執行緒可以交換彼此的資料。乙個執行緒先到達同步點就會被阻塞,到另外乙個執行緒也進入同步點為止,兩個到達後就開始交換資料

參考:執行緒池原理

參考:reentrantlock

juc 並發包的基礎 cas 與 volatile

即一種對記憶體中的資料進行操作的指令,而且該操作是原子的操作其過程如下 首先cpu將記憶體中的將要被修改的資料與預期的值進行比較,如果這兩個值相等,cpu則會將記憶體中數值替換為新值,否則不做操作。使用非阻塞演算法,定義乙個執行緒的失敗或者掛起,是不會影響其它執行緒的失敗或者掛起的。該操作是直接修改...

JUC併發程式設計

併發程式設計的本質 充分利用cpu的資源 執行緒就是乙個單獨的資源類,沒有任何的附屬操作。傳統的synchronize鎖本質 佇列,鎖 lock.lock 加鎖 trynew reentrantlock lock.lock 加鎖 finally lock.unlock 解鎖鎖是什麼,如何判斷鎖的是誰...

juc併發程式設計

public class thraedtest string.valueof i start countdownlatch.await system.out.println 關門結束 訊號量通常用來限制執行緒數,比如限流,而不是訪問某些 物理或邏輯 資源。例如,這是乙個使用訊號量來控制對乙個專案池的...