91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解Java并發容器

發布時間:2021-10-23 14:44:12 來源:億速云 閱讀:123 作者:iii 欄目:開發技術

這篇文章主要講解了“如何理解Java并發容器”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何理解Java并發容器”吧!

目錄
  • 1、原子類

  • 2、鎖

  • 3、并發容器

  • 4、List接口下

  • 5、Map接口下

  • 6、Set接口下

  • 7、Queue接口下

Java并發包(concurrent)是Java用來處理并發問題的利器,該并發包中主要有原子類,鎖(lock),并發容器類等等。本系列博客主要就是介紹并發包中一些常用的并發容器,常用的類。那么就讓我們一起來揭開并發包的面紗吧。

環境:

基于JDK1.8

1、原子類

首先登場的就是我們的原子類。啥是原子類?原子類用啥用?
第一個問題,啥是原子類:操作具有原子性的類,我們稱之為原子類。為啥要有原子類呢?
原子類是為了保證操作的原子性。例如:long i=0; i=i+1(i為全局變量),在多線程的環境下,就有線程安全的問題,因為,i=i+1這個操作分為三條CPU指令執行。指令執行完之后會發生指令切換,造成可見性問題。但是,如果我們使用AtomicLong類來包裝i,然后調用getAndIncrement()方法(該方法是具有原子性的),則可以保證其安全性。

 AtomicLong atest = new AtomicLong(0);
 atest.getAndIncrement();

原子類主要有如下幾個:

如何理解Java并發容器

2、鎖

原子類說完了,我們接著來說說鎖,我們都知道Javasynchronized關鍵字作為同步鎖,同時,在并發包中還提供了Lock鎖。關于Locksynchronized的區別后面會有說到。

鎖的類圖如下:

如何理解Java并發容器

3、并發容器

簡單的說完了鎖,我們接著來看重頭戲并發容器。雖然,Java中提供了同步容器VectorCollections包裝的容器。但是同步容器最大的問題就是性能太差。因為其是直接對添加元素,刪除元素,讀取元素的所有方法都加鎖。
所有在并發包中提供了并發容器,并發容器的實現后面我們在闡述。

我們先看看有哪些并發容器。
按照數據結構類型分類來看。

4、List接口下

List 接口下有CopyOnWriteArrayList實現類。其實現是內部維護了一個數組,成員變量array就指向這個內部數組,讀操作都是基于array進行的,寫操作的話,
CopyOnWriteArrayList會將array復制一份,然后,在新復制處理的數組上執行增加元素的操作。執行完之后再將array指向這個新的數組。僅僅適用于寫操作非常少的場景,而且能夠容忍讀寫的短暫不一致的情況。

5、Map接口下

Map 接口下有ConcurrentHashMapConcurrentSkipListMapConcurrentHashMap內部的數據結構跟HashMap一致,都是數組+鏈表+紅黑樹的結構。ConcurrentSkipListMap內部的數據結構則是數組+跳表的數組結構。

如何理解Java并發容器

6、Set接口下

Set接口下面有ConcurrentSkipListSetCopyOnWriteArraySet兩個并發類。

7、Queue接口下

Queue接口下的并發容器類比較多,阻塞隊列BlockingQueue接口下有

單端堵塞隊列:

  • ArrayBlockingQueue

  • LinkedBlockingQueue

  • SynchronousQueue

  • LinkedTransferQueue

  • PriorityBlockingQueue

  • DelayQueue

雙端阻塞隊列:LinkedBlockingDeque

非阻塞隊列有:單端隊列ConcurrentLinkedQueue雙端隊列ConcurrentLinkedDeque

感謝各位的閱讀,以上就是“如何理解Java并發容器”的內容了,經過本文的學習后,相信大家對如何理解Java并發容器這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

无锡市| 绥芬河市| 嘉定区| 黎川县| 五指山市| 长寿区| 新建县| 尼勒克县| 南部县| 泗水县| 贺兰县| 新密市| 伽师县| 淮南市| 麻栗坡县| 松江区| 湘潭市| 车险| 秦皇岛市| 台中县| 玉门市| 江孜县| 观塘区| 通渭县| 九龙县| 内江市| 河南省| 海丰县| 即墨市| 河津市| 容城县| 迭部县| 宝丰县| 昌邑市| 辽中县| 武安市| 吴忠市| 炎陵县| 彩票| 扬州市| 雅安市|