【高性程】1.3AQS和併發容器

1.3.1AQS抽象隊列同步器詳解

1.同步鎖的本質-排隊

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
自己實現(獨享鎖)
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

2.AQS抽象隊列同步器

AQS!=Lock,但是可以實現Lock。(AQS大量用到了CAS)
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
通過對比源碼,發現可以將上面自己寫的獨享鎖封裝起來
寫個AQS-獨享鎖
(模板方法,設計好骨架,具體實現由子類來完成)
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
獨享鎖 實現抽象的AQS的方法
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

3.資源佔用流程

在這裏插入圖片描述
信號量和柵欄和倒計數器

4.Sempaphore

在這裏插入圖片描述
在這裏插入圖片描述
寫個AQS-共享鎖
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
信號量
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

4.CountDowmLatch

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

5.CyclicBarrier

在這裏插入圖片描述
在這裏插入圖片描述
示例:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

1.3.2併發容器類Map-J.U.C併發編程包詳解

1.實現hashMap分析

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
**加粗樣式**
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
以上爲jdk1.7裏的內容,1.8版本沒有segments(分段鎖,相當於固定的鎖,不能擴容 ),通過CAS機制。下圖:
在這裏插入圖片描述

2 .ConcurrentSkipListMap

在這裏插入圖片描述

3.使用鏈表存儲

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

1.3.3併發容器類list_set_queue

1.List

在這裏插入圖片描述
在這裏插入圖片描述

2.Set集合

在這裏插入圖片描述

3.Queue API

在這裏插入圖片描述

1.3.4Fork_Join框架詳解

1.Fork_Join作用

在這裏插入圖片描述

2. 意圖梳理

在這裏插入圖片描述

3.應用場景,查詢多個系統數據

優惠券等經常變動的消息,在一個系統中。用戶基本信息等,在另一個系統。
在這裏插入圖片描述

4.代碼示例

在這裏插入圖片描述

(1)調用接口,耗時→用多線程改造

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
ForkJoin工作竊取:每個線程有一個屬於自己的隊列,當自己的隊列沒有任務的時候,會竊取有任務的隊列,幫助 它執行任務。
衝突低;
在這裏插入圖片描述
實現思路
在這裏插入圖片描述

(2)使用場景

定義一個fork join pool
線程數量和CPU核數差不多
非阻塞處理non blocking
純內存操作、數據計算
在這裏插入圖片描述

(3)用countDowmLatch改造

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
【FutureTask原理及多線程知識擴展】

1.Future

在這裏插入圖片描述

2.FutureTask應用

在這裏插入圖片描述
在這裏插入圖片描述
代碼執行:
在這裏插入圖片描述
在這裏插入圖片描述
futureTask實現步驟:
call方法運行在run()方法裏面
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

3.線程安全性級別

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章