欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java中LinkedBlockingQueue與ArrayBlockingQueue的異同

 更新時(shí)間:2016年08月20日 11:38:18   投稿:mdxy-dxy  
這篇文章主要介紹了java中LinkedBlockingQueue與ArrayBlockingQueue的異同,需要的朋友可以參考下

相同:

1、LinkedBlockingQueue和ArrayBlockingQueue都實(shí)現(xiàn)了BlockingQueue接口;

2、LinkedBlockingQueue和ArrayBlockingQueue都是可阻塞的隊(duì)列

  內(nèi)部都是使用ReentrantLock和Condition來(lái)保證生產(chǎn)和消費(fèi)的同步;

  當(dāng)隊(duì)列為空,消費(fèi)者線程被阻塞;當(dāng)隊(duì)列裝滿,生產(chǎn)者線程被阻塞;

使用Condition的方法來(lái)同步和通信:await()和signal()

不同:

1、由上圖可以看出,他們的鎖機(jī)制不同

  LinkedBlockingQueue中的鎖是分離的,生產(chǎn)者的鎖PutLock,消費(fèi)者的鎖takeLock

  而ArrayBlockingQueue生產(chǎn)者和消費(fèi)者使用的是同一把鎖;

2、他們的底層實(shí)現(xiàn)機(jī)制也不同

  LinkedBlockingQueue內(nèi)部維護(hù)的是一個(gè)鏈表結(jié)構(gòu)

在生產(chǎn)和消費(fèi)的時(shí)候,需要?jiǎng)?chuàng)建Node對(duì)象進(jìn)行插入或移除,大批量數(shù)據(jù)的系統(tǒng)中,其對(duì)于GC的壓力會(huì)比較大

  而ArrayBlockingQueue內(nèi)部維護(hù)了一個(gè)數(shù)組

在生產(chǎn)和消費(fèi)的時(shí)候,是直接將枚舉對(duì)象插入或移除的,不會(huì)產(chǎn)生或銷毀任何額外的對(duì)象實(shí)例

 3、構(gòu)造時(shí)候的區(qū)別

  LinkedBlockingQueue有默認(rèn)的容量大小為:Integer.MAX_VALUE,當(dāng)然也可以傳入指定的容量大小

  ArrayBlockingQueue在初始化的時(shí)候,必須傳入一個(gè)容量大小的值

  看其提供的構(gòu)造方法就能知道

4、執(zhí)行clear()方法

  LinkedBlockingQueue執(zhí)行clear方法時(shí),會(huì)加上兩把鎖

 5、統(tǒng)計(jì)元素的個(gè)數(shù)

  LinkedBlockingQueue中使用了一個(gè)AtomicInteger對(duì)象來(lái)統(tǒng)計(jì)元素的個(gè)數(shù)

  ArrayBlockingQueue則使用int類型來(lái)統(tǒng)計(jì)元素

相關(guān)文章

  • 將Sublime Text 2配置為Java的IDE的教程

    將Sublime Text 2配置為Java的IDE的教程

    這篇文章主要介紹了將Sublime Text 2配置為Java的IDE的教程,包括能讓Sublime這個(gè)文本編輯器編譯和運(yùn)行Java程序等,需要的朋友可以參考下
    2015-07-07
  • Spring?MVC?URL地址映射的示例代碼

    Spring?MVC?URL地址映射的示例代碼

    @RequestMapping是一個(gè)用來(lái)處理請(qǐng)求地址映射的注解,可用于類或方法上。用于類上,表示類中的所有響應(yīng)請(qǐng)求的方法都是以該地址作為父路徑。,這篇文章主要介紹了Spring?MVC?URL地址映射,需要的朋友可以參考下
    2022-07-07
  • Spring?Boot:Idea從零開(kāi)始初始化后臺(tái)項(xiàng)目的教程

    Spring?Boot:Idea從零開(kāi)始初始化后臺(tái)項(xiàng)目的教程

    這篇文章主要介紹了Spring?Boot:Idea從零開(kāi)始初始化后臺(tái)項(xiàng)目的教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java使用Thread和Runnable的線程實(shí)現(xiàn)方法比較

    Java使用Thread和Runnable的線程實(shí)現(xiàn)方法比較

    這篇文章主要介紹了Java使用Thread和Runnable的線程實(shí)現(xiàn)方法,結(jié)合實(shí)例形式對(duì)比分析了Java使用Thread和Runnable實(shí)現(xiàn)與使用線程的相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • OKHttp3(支持Retrofit)的網(wǎng)絡(luò)數(shù)據(jù)緩存Interceptor攔截器的實(shí)現(xiàn)

    OKHttp3(支持Retrofit)的網(wǎng)絡(luò)數(shù)據(jù)緩存Interceptor攔截器的實(shí)現(xiàn)

    本篇文章主要介紹了OKHttp3(支持Retrofit)的網(wǎng)絡(luò)數(shù)據(jù)緩存Interceptor攔截器的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • SpringBoot中的自動(dòng)配置原理詳解

    SpringBoot中的自動(dòng)配置原理詳解

    這篇文章主要介紹了SpringBoot中的自動(dòng)配置原理詳解,springboot的自動(dòng)配置類直觀的表現(xiàn)就是通過(guò)一系列的注解,使得springboot項(xiàng)目在啟動(dòng)的時(shí)候從配置文件中加載需要自動(dòng)配置的類,注入容器中,需要的朋友可以參考下
    2024-01-01
  • Java啟動(dòng)參數(shù)(-,?-X,?-XX參數(shù))的使用

    Java啟動(dòng)參數(shù)(-,?-X,?-XX參數(shù))的使用

    本文主要介紹了Java啟動(dòng)參數(shù)(-,?-X,?-XX參數(shù))的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Hibernate使用hbm.xml配置映射關(guān)系解析

    Hibernate使用hbm.xml配置映射關(guān)系解析

    這篇文章主要介紹了Hibernate使用hbm.xml配置映射關(guān)系解析,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 詳解Mybatis注解寫(xiě)法(附10余個(gè)常用例子)

    詳解Mybatis注解寫(xiě)法(附10余個(gè)常用例子)

    這篇文章主要介紹了詳解Mybatis注解寫(xiě)法(附10余個(gè)常用例子),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 基于SpringBoot實(shí)現(xiàn)自動(dòng)裝配返回屬性的設(shè)計(jì)思路

    基于SpringBoot實(shí)現(xiàn)自動(dòng)裝配返回屬性的設(shè)計(jì)思路

    這篇文章主要介紹了基于SpringBoot實(shí)現(xiàn)自動(dòng)裝配返回屬性,這里涉及到的技術(shù)知識(shí)點(diǎn)有注解解析器,為什么用ResponseBodyAdvice這里解析?不在Filter,Interceptors,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-03-03

最新評(píng)論