国产探花免费观看_亚洲丰满少妇自慰呻吟_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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宣化县| 舞阳县| 星子县| 财经| 康乐县| 营山县| 保亭| 长葛市| 岐山县| 城步| 孟村| 凤冈县| 茂名市| 天全县| 江油市| 师宗县| 台山市| 满洲里市| 嘉义县| 珠海市| 太仆寺旗| 宁德市| 昌都县| 高邑县| 青冈县| 蒲江县| 德保县| 榕江县| 桂阳县| 河南省| 淄博市| 英山县| 洞口县| 盖州市| 阳原县| 昌乐县| 平罗县| 瓦房店市| 光泽县| 安阳县| 安阳县|