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()方法裏面