最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java concurrency之集合_動力節(jié)點Java學院整理

 更新時間:2017年06月12日 15:13:38   作者:skywang12345  
Java集合主體內(nèi)容包括Collection集合和Map類;而Collection集合又可以劃分為List(隊列)和Set(集合),有需要的小伙伴可以參考下

Java集合包

Java集合主體內(nèi)容包括Collection集合和Map類;而Collection集合又可以劃分為List(隊列)和Set(集合)。

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

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

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

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

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

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

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

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

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

(02) WeakHashMap是也是哈希表;和HashMap不同的是,HashMap的“鍵”是強引用類型,而WeakHashMap的“鍵”是弱引用類型,也就是說當WeakHashMap 中的某個鍵不再正常使用時,會被從WeakHashMap中被自動移除。WeakHashMap也不是線程安全的,只適用于單線程。

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

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

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

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

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

JUC中的集合類

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

1. List和Set

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

ConcurrentSkipListSet稍后在說明Map時再說明,CopyOnWriteArrayList 和 CopyOnWriteArraySet的框架如下圖所示:

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

(02) CopyOnWriteArraySet相當于線程安全的HashSet,它繼承于AbstractSet類。CopyOnWriteArraySet內(nèi)部包含一個CopyOnWriteArrayList對象,它是通過CopyOnWriteArrayList實現(xiàn)的。

2. Map

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

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

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

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

3. Queue

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

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

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

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

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

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

相關文章

  • 用Java打造簡易計算器的實現(xiàn)步驟

    用Java打造簡易計算器的實現(xiàn)步驟

    這篇文章主要介紹了如何設計和實現(xiàn)一個簡單的Java命令行計算器程序,該程序能夠執(zhí)行基本的數(shù)學運算(加、減、乘、除),文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-01-01
  • java 字符串反轉(zhuǎn)的實例詳解

    java 字符串反轉(zhuǎn)的實例詳解

    這篇文章主要介紹了java 字符串反轉(zhuǎn)的實例詳解的相關資料,這里提供實現(xiàn)代碼幫助大家學習參考這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • Java并發(fā)編程之關鍵字volatile知識總結(jié)

    Java并發(fā)編程之關鍵字volatile知識總結(jié)

    今天帶大家學習java的相關知識,文章圍繞著Java關鍵字volatile展開,文中有非常詳細的知識總結(jié),需要的朋友可以參考下
    2021-06-06
  • Java工廠模式的深入了解

    Java工廠模式的深入了解

    這篇文章主要為大家介紹了Java工廠模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • SpringCloud集成和使用OpenFeign的教程指南

    SpringCloud集成和使用OpenFeign的教程指南

    在微服務架構(gòu)中,服務間的通信是至關重要的,SpringCloud作為一個功能強大的微服務框架,為我們提供了多種服務間通信的方式,其中,OpenFeign是一個聲明式的Web服務客戶端,它使得編寫Web服務客戶端變得更加簡單,本文將詳細介紹如何在SpringCloud項目中集成和使用OpenFeign
    2024-10-10
  • springboot全局配置文件與多環(huán)境配置的全過程

    springboot全局配置文件與多環(huán)境配置的全過程

    SpringBoot項目在多環(huán)境配置上表現(xiàn)的非常優(yōu)秀,只需要非常簡單的操作就可以完成配置,下面這篇文章主要給大家介紹了關于springboot全局配置文件與多環(huán)境配置的相關資料,需要的朋友可以參考下
    2021-12-12
  • springboot如何查找配置文件路徑的順序和其優(yōu)先級別

    springboot如何查找配置文件路徑的順序和其優(yōu)先級別

    此文是在工作中遇到的關于springboot配置文件的問題,在網(wǎng)上查閱資料和自己測試之后記錄的,以便日后查閱。希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Springboot2.x結(jié)合Mabatis3.x下Hikari連接數(shù)據(jù)庫報超時錯誤

    Springboot2.x結(jié)合Mabatis3.x下Hikari連接數(shù)據(jù)庫報超時錯誤

    本文針對Springboot2.x與Mybatis3.x結(jié)合使用時,Hikari連接數(shù)據(jù)庫出現(xiàn)超時錯誤的問題進行了深入分析,并提供了一系列有效的解決方法,感興趣的可以了解一下
    2023-11-11
  • 詳解FutureTask如何實現(xiàn)最大等待時間

    詳解FutureTask如何實現(xiàn)最大等待時間

    這篇文章主要為大家詳細介紹了如何從源碼中了解FutureTask實現(xiàn)最大等待時間的方法,文中的示例代碼講解詳細,感興趣的可以了解一下
    2023-03-03
  • 關于maven工程多模塊、項目打包問題

    關于maven工程多模塊、項目打包問題

    這篇文章主要介紹了關于maven工程多模塊、項目打包問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03

最新評論

淄博市| 盐源县| 张家界市| 高碑店市| 宿迁市| 东明县| 晋江市| 新巴尔虎左旗| 沙洋县| 新河县| 浏阳市| 铁力市| 广平县| 凌海市| 什邡市| 社旗县| 石阡县| 昂仁县| 泾源县| 阿荣旗| 顺义区| 双辽市| 望奎县| 洪洞县| 翁源县| 崇左市| 安塞县| 八宿县| 油尖旺区| 沧源| 安丘市| 军事| 桐城市| 沈丘县| 聊城市| 明水县| 英德市| 栾川县| 马尔康县| 英山县| 尉氏县|