真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

線程池阻塞隊(duì)列為什么都用LinkedBlockingQueue

今天就跟大家聊聊有關(guān)線程池阻塞隊(duì)列為什么都用LinkedBlockingQueue,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

漯河網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),漯河網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為漯河上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個(gè)售后服務(wù)好的漯河做網(wǎng)站的公司定做!

不管是Executors提供的幾種線程池,還是Spring提供的線程池,你會(huì)發(fā)現(xiàn)阻塞隊(duì)列用的都是LinkedBlockingQueue,而不是用的ArrayBlockingQueue

LinkedBlockingQueue

使用單鏈表實(shí)現(xiàn),提供3種構(gòu)造函數(shù)

  1. LinkedBlockingQueue() 無參構(gòu)造函數(shù),鏈表長度為Integer.MAX_VALUE

  2. LinkedBlockingQueue(int capacity) 指定capacity長度

  3. LinkedBlockingQueue(Collection c) 不指定長度,即默認(rèn)長度為Integer.MAX_VALUE,提供初始化元素

鏈表節(jié)點(diǎn)由Node對象組成,每個(gè)Node有item變量用于存儲(chǔ)元素,next變量指向下一個(gè)節(jié)點(diǎn)

執(zhí)行put的時(shí)候,將元素放到鏈表尾部節(jié)點(diǎn);take的時(shí)候從頭部取元素

兩種操作分別有一個(gè)鎖putLock, takeLock,互不影響,可以同時(shí)進(jìn)行

/** Lock held by take, poll, etc */
private final ReentrantLock takeLock = new ReentrantLock();

/** Lock held by take, poll, etc */
private final ReentrantLock takeLock = new ReentrantLock();
ArrayBlockingQueue

使用數(shù)組實(shí)現(xiàn),3種構(gòu)造函數(shù)

  1. ArrayBlockingQueue(int capacity) 指定長度

  2. ArrayBlockingQueue(int capacity, boolean fair) 指定長度,及指定是否使用FIFO順序進(jìn)出隊(duì)列

  3. ArrayBlockingQueue(int capacity, boolean fair, Collection c) 指定長度,進(jìn)行隊(duì)列順序,初始元素

從構(gòu)造函數(shù)看出,ArrayBlockingQueue必須指定初始化長度,如果線程池使用該隊(duì)列,指定長度大了浪費(fèi)內(nèi)存,長度小隊(duì)列并發(fā)性不高,在數(shù)組滿的時(shí)候,put操作只能阻塞等待,或者返回false

ArrayBlockingQueue 只定義了一個(gè)Lock,put和take使用同一鎖,不能同時(shí)進(jìn)行

/** Main lock guarding all access */
    final ReentrantLock lock;
  1. LinkedBlockingQueue 無須指定長度,放入和取出元素使用不同的鎖,互不影響,效率高,通用性強(qiáng)

  2. ArrayBlockingQueue 必須指定長度,大了浪費(fèi)內(nèi)存,小了性能不高,使用同一把鎖,效率低

看完上述內(nèi)容,你們對線程池阻塞隊(duì)列為什么都用LinkedBlockingQueue有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


本文題目:線程池阻塞隊(duì)列為什么都用LinkedBlockingQueue
當(dāng)前URL:http://weahome.cn/article/podehh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部