一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java concurrency之集合_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

Java concurrency之集合_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

2020-11-15 20:05動(dòng)力節(jié)點(diǎn) Java教程

Java集合主體內(nèi)容包括Collection集合和Map類;而Collection集合又可以劃分為L(zhǎng)ist(隊(duì)列)和Set(集合),有需要的小伙伴可以參考下

Java集合

Java集合主體內(nèi)容包括Collection集合和Map類;而Collection集合又可以劃分為L(zhǎng)ist(隊(duì)列)和Set(集合)。

1. List的實(shí)現(xiàn)類主要有: LinkedList, ArrayList, Vector, Stack。

(01) LinkedList是雙向鏈表實(shí)現(xiàn)的雙端隊(duì)列;它不是線程安全的,只適用于單線程。

(02) ArrayList是數(shù)組實(shí)現(xiàn)的隊(duì)列,它是一個(gè)動(dòng)態(tài)數(shù)組;它也不是線程安全的,只適用于單線程。

(03) Vector是數(shù)組實(shí)現(xiàn)的矢量隊(duì)列,它也一個(gè)動(dòng)態(tài)數(shù)組;不過(guò)和ArrayList不同的是,Vector是線程安全的,它支持并發(fā)。

(04) Stack是Vector實(shí)現(xiàn)的棧;和Vector一樣,它也是線程安全的。 

2. Set的實(shí)現(xiàn)類主要有: HastSet和TreeSet。

(01) HashSet是一個(gè)沒有重復(fù)元素的集合,它通過(guò)HashMap實(shí)現(xiàn)的;HashSet不是線程安全的,只適用于單線程。

(02) TreeSet也是一個(gè)沒有重復(fù)元素的集合,不過(guò)和HashSet不同的是,TreeSet中的元素是有序的;它是通過(guò)TreeMap實(shí)現(xiàn)的;TreeSet也不是線程安全的,只適用于單線程。 

3.Map的實(shí)現(xiàn)類主要有: HashMap,WeakHashMap, Hashtable和TreeMap。
(01) HashMap是存儲(chǔ)“鍵-值對(duì)”的哈希表;它不是線程安全的,只適用于單線程。

(02) WeakHashMap是也是哈希表;和HashMap不同的是,HashMap的“鍵”是強(qiáng)引用類型,而WeakHashMap的“鍵”是弱引用類型,也就是說(shuō)當(dāng)WeakHashMap 中的某個(gè)鍵不再正常使用時(shí),會(huì)被從WeakHashMap中被自動(dòng)移除。WeakHashMap也不是線程安全的,只適用于單線程。

(03) Hashtable也是哈希表;和HashMap不同的是,Hashtable是線程安全的,支持并發(fā)。

(04) TreeMap也是哈希表,不過(guò)TreeMap中的“鍵-值對(duì)”是有序的,它是通過(guò)R-B Tree(紅黑樹)實(shí)現(xiàn)的;TreeMap不是線程安全的,只適用于單線程。

更多關(guān)于這些集合類的介紹,可以參考“Java 集合系列目錄(Category)”。

為了方便,我們將前面介紹集合類統(tǒng)稱為”java集合包“。java集合包大多是“非線程安全的”,雖然可以通過(guò)Collections工具類中的方法獲取java集合包對(duì)應(yīng)的同步類,但是這些同步類的并發(fā)效率并不是很高。為了更好的支持高并發(fā)任務(wù),并發(fā)大師Doug Lea在JUC(java.util.concurrent)包中添加了java集合包中單線程類的對(duì)應(yīng)的支持高并發(fā)的類。例如,ArrayList對(duì)應(yīng)的高并發(fā)類是CopyOnWriteArrayList,HashMap對(duì)應(yīng)的高并發(fā)類是ConcurrentHashMap,等等。

JUC包在添加”java集合包“對(duì)應(yīng)的高并發(fā)類時(shí),為了保持API接口的一致性,使用了”Java集合包“中的框架。例如,CopyOnWriteArrayList實(shí)現(xiàn)了“Java集合包”中的List接口,HashMap繼承了“java集合包”中的AbstractMap類,等等。得益于“JUC包使用了Java集合包中的類”,如果我們了解了Java集合包中的類的思想之后,理解JUC包中的類也相對(duì)容易;理解時(shí),最大的難點(diǎn)是,對(duì)JUC包是如何添加對(duì)“高并發(fā)”的支持的!

JUC中的集合類

下面,我們先了解JUC包中集合類的框架;為了方便講訴,我將JUC包中的集合類劃分為3部分來(lái)進(jìn)行說(shuō)明。在簡(jiǎn)單的了解JUC包中集合類的框架之后,后面的章節(jié)再逐步對(duì)各個(gè)類進(jìn)行介紹。

1. List和Set

JUC集合包中的List和Set實(shí)現(xiàn)類包括: CopyOnWriteArrayList, CopyOnWriteArraySet和ConcurrentSkipListSet。

ConcurrentSkipListSet稍后在說(shuō)明Map時(shí)再說(shuō)明,CopyOnWriteArrayList 和 CopyOnWriteArraySet的框架如下圖所示:

Java concurrency之集合_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

(01) CopyOnWriteArrayList相當(dāng)于線程安全的ArrayList,它實(shí)現(xiàn)了List接口。CopyOnWriteArrayList是支持高并發(fā)的。

(02) CopyOnWriteArraySet相當(dāng)于線程安全的HashSet,它繼承于AbstractSet類。CopyOnWriteArraySet內(nèi)部包含一個(gè)CopyOnWriteArrayList對(duì)象,它是通過(guò)CopyOnWriteArrayList實(shí)現(xiàn)的。

2. Map

JUC集合包中Map的實(shí)現(xiàn)類包括: ConcurrentHashMap和ConcurrentSkipListMap。它們的框架如下圖所示:

Java concurrency之集合_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

(01) ConcurrentHashMap是線程安全的哈希表(相當(dāng)于線程安全的HashMap);它繼承于AbstractMap類,并且實(shí)現(xiàn)ConcurrentMap接口。ConcurrentHashMap是通過(guò)“鎖分段”來(lái)實(shí)現(xiàn)的,它支持并發(fā)。

(02) ConcurrentSkipListMap是線程安全的有序的哈希表(相當(dāng)于線程安全的TreeMap); 它繼承于AbstractMap類,并且實(shí)現(xiàn)ConcurrentNavigableMap接口。ConcurrentSkipListMap是通過(guò)“跳表”來(lái)實(shí)現(xiàn)的,它支持并發(fā)。

(03) ConcurrentSkipListSet是線程安全的有序的集合(相當(dāng)于線程安全的TreeSet);它繼承于AbstractSet,并實(shí)現(xiàn)了NavigableSet接口。ConcurrentSkipListSet是通過(guò)ConcurrentSkipListMap實(shí)現(xiàn)的,它也支持并發(fā)。

3. Queue

JUC集合包中Queue的實(shí)現(xiàn)類包括: ArrayBlockingQueue, LinkedBlockingQueue, LinkedBlockingDeque, ConcurrentLinkedQueue和ConcurrentLinkedDeque。它們的框架如下圖所示:

Java concurrency之集合_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

(01) ArrayBlockingQueue是數(shù)組實(shí)現(xiàn)的線程安全的有界的阻塞隊(duì)列。

(02) LinkedBlockingQueue是單向鏈表實(shí)現(xiàn)的(指定大小)阻塞隊(duì)列,該隊(duì)列按 FIFO(先進(jìn)先出)排序元素。

(03) LinkedBlockingDeque是雙向鏈表實(shí)現(xiàn)的(指定大小)雙向并發(fā)阻塞隊(duì)列,該阻塞隊(duì)列同時(shí)支持FIFO和FILO兩種操作方式。

(04) ConcurrentLinkedQueue是單向鏈表實(shí)現(xiàn)的無(wú)界隊(duì)列,該隊(duì)列按 FIFO(先進(jìn)先出)排序元素。

(05) ConcurrentLinkedDeque是雙向鏈表實(shí)現(xiàn)的無(wú)界隊(duì)列,該隊(duì)列同時(shí)支持FIFO和FILO兩種操作方式。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 热久久最新地址 | 关晓彤被调教出奶水 | 日本老妇和子乱视频 | 男女性潮高片无遮挡禁18 | 久久一本岛在免费线观看2020 | 九九精品国产亚洲A片无码 九九99热久久999精品 | 精品亚洲麻豆1区2区3区 | 国模人体aⅴ | 很很草 | 成人网视频免费播放 | 亚洲国产精品网 | 晓雪老师我要进你里面好爽 | 韩国三级大全 | 青青青青久久国产片免费精品 | 骚虎tv| 乌克兰成人性色生活片 | 91制片厂制作果冻传媒破解 | 欧洲美女女同 | 日韩资源在线 | 亚洲欧美久久一区二区 | 免费网站国产 | 成年人在线观看免费视频 | 色噜噜亚洲男人的天堂www | 亚洲第一天堂无码专区 | 亚洲黄色高清 | 欧美伊香蕉久久综合类网站 | 久青草国产观看在线视频 | a级黄色片免费 | 水多多凹凸福利视频导航 | bl双性受乖调教改造身体 | 国产精品福利一区二区亚瑟 | 欧美搞逼视频 | 麻豆视频入口 | 好湿好紧太硬了我太爽了h 好湿好滑好硬好爽好深视频 | 国产精品色爱综合网 | 日本视频在线免费看 | 日本aa大片在线播放免费看 | 国色天香社区视频免费观看3 | 四虎四虎| 欧美人与牲动交xxx 欧美人妖另类性hd 欧美人人干 | www.色呦呦.com|