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

首頁 > 編程 > Java > 正文

Java中同步與并發用法分析

2019-11-26 15:09:42
字體:
來源:轉載
供稿:網友

本文較為詳細的分析了Java中同步與并發的用法。分享給大家供大家參考。具體分析如下:

1.同步容器類包括兩部分:vector和hashtable

另一類是同步包裝類,由Collections.synchronizedXXX創建。同步容器對容器的所有狀態進行串行訪問,從而實現線程安全。

它們存在如下問題:

a) 對于符合操作,需要額外的鎖保護。比如迭代,缺少則添加等條件運算。
b) toString,hashCode,equals都會間接的調用迭代,都需要注意并發。
 
2.java5.0中的并發容器。

ConcurrentHashMap可以替代同步Map實現。

當主要為讀操作時,CopyOnWriteArrayList是List的同步實現。
同時,增加了Queue和BlockingQueue:ConcurentLinkedQueue:FIFO隊列。
PriorityQueue:非并發的優先級順序隊列。
BlockingQueue則增加了可阻塞的插入和獲取。

a) ConcurentHashMap:不是使用一個公共鎖,而是分離鎖。任意數量的讀線程可以并發訪問map,讀者和寫者也可以并發訪問Map,并且有限數量的寫還可以并發修改Map。但是,size和isEmpty語言被弱化,是估算值。

b) CopyOnWriteArrayList:迭代器保留一個底層基礎數組引用,改引用不會修改。
 
3.Synchronizer

a) 閉鎖(CountDownLatch)。構造函數參數為n,通過countDown,n為0后,所有await的線程繼續執行。

b) FutureTask:計算由Callable實現,可以攜帶結果的Runnable。包括:等待,運行和完成。

c) Semaphore:控制能夠同時訪問的活動數量

d) CyclicBarrier:類似于閉鎖。閉鎖等待的是事件,關卡等待的是其他線程。初始n,Runnable r,n個線程都await(),當n個線程都執行完成后到達關卡時,r執行,關卡重置,n個線程繼續。

希望本文所述對大家的java程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿巴嘎旗| 阳朔县| 右玉县| 德阳市| 富宁县| 察哈| 安新县| 普陀区| 樟树市| 新宾| 区。| 石首市| 安龙县| 兰州市| 托克逊县| 宁陵县| 郧西县| 宁城县| 澳门| 尼木县| 项城市| 彝良县| 铜梁县| 灌阳县| 泽普县| 巴林右旗| 九台市| 湖南省| 西宁市| 怀仁县| 南投市| 龙泉市| 南岸区| 青岛市| 鄂伦春自治旗| 右玉县| 马鞍山市| 沧州市| 德化县| 泰州市| 奉新县|