国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

淺談Java線程并發知識點

2019-11-26 13:25:18
字體:
來源:轉載
供稿:網友

發布:一個對象是使它能夠被當前范圍之外的代碼所引用:

常見形式:將對象的的引用存儲到公共靜態域;非私有方法中返回引用;發布內部類實例,包含引用。

逃逸:在對象尚未準備好時就將其發布。

不要讓this引用在構造函數中逸出。例,在構造函數中啟動線程,線程會包含對象的引用。

同步容器:對容器的所有狀態進行穿行訪問,Vector、Hashtable,Cllections.synchronizedMap|List

并發容器:ConcurrentHashMap,CopyOnWriteArrayList,ConcurrentLinkedQueue、BlockingQueue

list 隨機訪問特性的優勢。

Blocking 增加了可阻塞的get set操作

ConcurrentHashMap:分離鎖,為并發訪問帶來的高的吞吐量,同時幾乎沒有損失單個線程的訪問性能。返回弱一致性的迭代器。

迭代器的弱一致性,在迭代器生成以后會檢測容器的修改變化。

并發容器 size(), isEmpty() 弱化,返回近似結果。

CopyOnWriteArrayList:每次修改容器時復制,適用迭代需求大于修改需求情況。

生產者消費者模式,運用有界阻塞隊列解耦生產者和消費者的代碼。

Executor任務執行框架,實現了生產者消費者模式。

SynchronousQueue:put等待消費者可用,take等待生產者可用,適用于消費者充足的情景。

雙端隊列(deque)關聯于竊取工作模式(work stealing),區別于生產者消費者模式中所有消費者共享一個工作隊列,工作竊取模式每一個消費者都有自己的雙端隊列,如果一個消費者完成自己的全部工作,就可以偷取其它消費者隊列隊尾的任務。

工作竊取模式適用于當運行到一個任務的某一個單元時,可能會識別出更多的任務,如遍歷文件。

當一個方法能夠拋出InterruptedException時,說明它是可阻塞方法。拋出或捕獲InterruptedException。

Synchronizer:同步者---semaphore、barrier、latch,封裝狀態,決定線程在此狀態下的行為(通過或阻塞),提供操控狀態的方法,高效的等待同步者進入期望的狀態。

latch閉鎖:延遲線程進度直到線程到達一個終點狀態,像一個一次性開關。可以用來確保特定活動直到其它活動完成才發生。

例如:

  • 確保一個計算不會被執行,直到需要的資源都被初始化。
  • 確保一個服務不會被開始,直到依賴的其它服務已經開始。
  • 等待,直到活動的所有部分都為繼續處理做好準備。

FutureTask可以作為閉鎖,抽象的可攜帶結果的計算,通過callable實現。Future.get依賴于任務的執行狀態,任務運行完成則返回結果,否則一直等待,

Executor框架利用FutureTask完成異步任務。

semapher信號量:用來控制能夠同時訪問某特定資源的活動數量或同時執行某一給定操作的數量,資源池,容器邊界。

barrier關卡:類似于閉鎖,區別所有的線程必須同時到達關卡,才能繼續處理,閉鎖等待的是時間,關卡等待的是其它線程,重復使用。通過關卡,await會為每一個線程返回唯一的到達索引號,可以用它來選舉產生一個領導,在下一次迭代中承擔一些特殊任務。

Exchanger一種關卡的形式。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临海市| 白河县| 鄄城县| 石城县| 甘孜县| 南安市| 瓮安县| 兴国县| 萝北县| 建始县| 泰宁县| 丰城市| 正阳县| 祁东县| 都安| 鸡西市| 海盐县| 青阳县| 湘西| 濮阳市| 威宁| 福鼎市| 竹北市| 沂源县| 汕头市| 航空| 山东省| 改则县| 台中市| 永仁县| 噶尔县| 琼海市| 阳山县| 济宁市| 大姚县| 宁都县| 宁都县| 滁州市| 资源县| 苍南县| 临清市|