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

Java并發(fā)容器介紹

 更新時間:2021年10月23日 12:15:07   作者:碼農(nóng)飛哥  
這篇文章主要介紹了Java并發(fā)容器,Java并發(fā)包(concurrent)是Java用來處理并發(fā)問題的利器,該并發(fā)包中主要有原子類,鎖(lock),并發(fā)容器類等等。本系列博客主要就是介紹并發(fā)包中一些常用的并發(fā)容器,常用的類,那么我們就來看看下面文章的詳細內(nèi)容吧

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

環(huán)境:

基于JDK1.8

1、原子類

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

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

原子類主要有如下幾個:

2、鎖

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

鎖的類圖如下:

3、并發(fā)容器

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

我們先看看有哪些并發(fā)容器。
按照數(shù)據(jù)結(jié)構(gòu)類型分類來看。

4、List接口下

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

5、Map接口下

Map 接口下有ConcurrentHashMapConcurrentSkipListMap。ConcurrentHashMap內(nèi)部的數(shù)據(jù)結(jié)構(gòu)跟HashMap一致,都是數(shù)組+鏈表+紅黑樹的結(jié)構(gòu)。ConcurrentSkipListMap內(nèi)部的數(shù)據(jù)結(jié)構(gòu)則是數(shù)組+跳表的數(shù)組結(jié)構(gòu)。

6、Set接口下

Set接口下面有ConcurrentSkipListSetCopyOnWriteArraySet兩個并發(fā)類。

7、Queue接口下

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

單端堵塞隊列:

  • ArrayBlockingQueue
  • LinkedBlockingQueue
  • SynchronousQueue
  • LinkedTransferQueue
  • PriorityBlockingQueue
  • DelayQueue

雙端阻塞隊列:LinkedBlockingDeque

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

總結(jié):

到此這篇關于Java并發(fā)容器介紹的文章就介紹到這了,更多相關Java并發(fā)容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java數(shù)據(jù)結(jié)構(gòu)與算法之棧(Stack)實現(xiàn)詳解

    Java數(shù)據(jù)結(jié)構(gòu)與算法之棧(Stack)實現(xiàn)詳解

    這篇文章主要為大家詳細介紹了Java數(shù)據(jù)結(jié)構(gòu)學習筆記第二篇,Java數(shù)據(jù)結(jié)構(gòu)與算法之棧Stack實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 23種設計模式(17)java命令模式

    23種設計模式(17)java命令模式

    這篇文章主要為大家詳細介紹了23種設計模式之java命令模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • java?ArrayList的深拷貝與淺拷貝問題

    java?ArrayList的深拷貝與淺拷貝問題

    這篇文章主要介紹了java?ArrayList的深拷貝與淺拷貝問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 淺析Java中的虛擬線程

    淺析Java中的虛擬線程

    在本篇文章中,小編將帶大家深入了解Java虛擬線程的原理、如何使用、使用的注意事項以及其他相似技術(shù)的差別,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-10-10
  • Spring Boot修改啟動端口的方法

    Spring Boot修改啟動端口的方法

    下面小編就為大家?guī)硪黄猄pring Boot修改啟動端口的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Java的四種引用方式

    Java的四種引用方式

    這篇文章主要介紹了Java的四種引用方式,Java的引用方式主要包括強引用、軟引用、弱引用、虛引用;下面文章便來詳細介紹這四種引用方式,需要的朋友可以參考一下
    2021-10-10
  • Spring實戰(zhàn)之使用靜態(tài)工廠方法創(chuàng)建Bean操作示例

    Spring實戰(zhàn)之使用靜態(tài)工廠方法創(chuàng)建Bean操作示例

    這篇文章主要介紹了Spring實戰(zhàn)之使用靜態(tài)工廠方法創(chuàng)建Bean操作,結(jié)合實例形式分析了靜態(tài)工廠方法創(chuàng)建Bean的相關實現(xiàn)步驟與操作注意事項,需要的朋友可以參考下
    2019-11-11
  • spring boot的攔截器簡單使用示例代碼

    spring boot的攔截器簡單使用示例代碼

    這篇文章主要介紹了spring boot的攔截器簡單使用實例代碼,需要的的朋友參考下吧
    2017-04-04
  • Java?I/O?(Input/Output)文件字節(jié)流舉例詳解

    Java?I/O?(Input/Output)文件字節(jié)流舉例詳解

    Java的輸入輸出流(IO)是用于與外部設備(如文件、網(wǎng)絡連接等)進行數(shù)據(jù)交互的機制,下面這篇文章主要給大家介紹了關于Java?I/O?(Input/Output)文件字節(jié)流的相關資料,需要的朋友可以參考下
    2024-08-08
  • SpringBoot3配置Logback日志滾動文件的方法

    SpringBoot3配置Logback日志滾動文件的方法

    本文介紹了在SpringBoot3中配置Logback日志滾動文件的方法,因為SpringBoot3內(nèi)置的logback版本是1.4.14,之前使用SpringBoot2.1.5的logback配置發(fā)現(xiàn)有些東西不能生效了,需要的朋友可以參考下
    2024-08-08

最新評論

松原市| 鄄城县| 高密市| 喀喇沁旗| 留坝县| 广饶县| 叙永县| 镇江市| 江源县| 普格县| 余庆县| SHOW| 修武县| 开平市| 蚌埠市| 清镇市| 德阳市| 灌云县| 巨野县| 天柱县| 依兰县| 吐鲁番市| 云龙县| 石阡县| 长沙市| 神木县| 运城市| 抚远县| 手机| 湖南省| 丁青县| 隆化县| 保康县| 库尔勒市| 南溪县| 卢龙县| 静乐县| 深泽县| 西贡区| 兴海县| 黄石市|