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

通過實例了解java TransferQueue

 更新時間:2019年05月28日 14:15:15   作者:codecraft  
這篇文章主要介紹了TransferQueue實例,下面小編和大家一起來學習一下

序言

本文主要簡介一下TransferQueue。

TransferQueue

TransferQueue(java7引入)繼承了BlockingQueue(BlockingQueue又繼承了Queue)并擴展了一些新方法。生產(chǎn)者會一直阻塞直到所添加到隊列的元素被某一個消費者所消費(不僅僅是添加到隊列里就完事)。

LinkedTransferQueue

LinkedTransferQueue實際上是ConcurrentLinkedQueue、SynchronousQueue(公平模式)和LinkedBlockingQueue的超集。而且LinkedTransferQueue更好用,因為它不僅僅綜合了這幾個類的功能,同時也提供了更高效的實現(xiàn)。

對比SynchronousQueue

SynchronousQueue使用兩個隊列(一個用于正在等待的生產(chǎn)者、另一個用于正在等待的消費者)和一個用來保護兩個隊列的鎖。而LinkedTransferQueue使用CAS操作實現(xiàn)一個非阻塞的方法,這是避免序列化處理任務的關鍵。

使用場景

當我們不想生產(chǎn)者過度生產(chǎn)消息時,TransferQueue可能非常有用,可避免發(fā)生OutOfMemory錯誤。在這樣的設計中,消費者的消費能力將決定生產(chǎn)者產(chǎn)生消息的速度。

實例

public class LinkedTransferQueueDemo {
static LinkedTransferQueue<String> lnkTransQueue = new LinkedTransferQueue<String>();
public static void main(String[] args) {
ExecutorService exService = Executors.newFixedThreadPool(2);
Producer producer = new LinkedTransferQueueDemo().new Producer();
Consumer consumer = new LinkedTransferQueueDemo().new Consumer();
exService.execute(producer);
exService.execute(consumer);
exService.shutdown();
}
class Producer implements Runnable{
@Override
public void run() {
for(int i=0;i<3;i++){
try {
System.out.println("Producer is waiting to transfer...");
lnkTransQueue.transfer("A"+i);
System.out.println("producer transfered element: A"+i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class Consumer implements Runnable{
@Override
public void run() {
for(int i=0;i<3;i++){
try {
System.out.println("Consumer is waiting to take element...");
String s= lnkTransQueue.take();
System.out.println("Consumer received Element: "+s);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}

輸出

Producer is waiting to transfer...
Consumer is waiting to take element...
producer transfered element: A0
Producer is waiting to transfer...
Consumer received Element: A0
Consumer is waiting to take element...
producer transfered element: A1
Producer is waiting to transfer...
Consumer received Element: A1
Consumer is waiting to take element...
Consumer received Element: A2
producer transfered element: A2

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • IDEA 卡住buid(編譯)不動的解決辦法

    IDEA 卡住buid(編譯)不動的解決辦法

    這篇文章主要介紹了IDEA 卡住buid(編譯)不動的解決辦法(適用于maven和gradle)及定位思路,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Springboot通過ObjectMapper配置json序列化詳解

    Springboot通過ObjectMapper配置json序列化詳解

    SpringBoot默認集成Jackson庫,其中ObjectMapper類是核心,用于Java對象與JSON字符串的互轉(zhuǎn),提供配置序列化特性、注冊模塊等方法,在SpringBoot中可以全局配置JSON格式,如日期格式化、將Long轉(zhuǎn)為字符串,還可以配置序列化時的各種規(guī)則,感興趣的可以了解一下
    2024-10-10
  • 當面試官問我ArrayList和LinkedList哪個更占空間時,我是這么答的(面試官必問)

    當面試官問我ArrayList和LinkedList哪個更占空間時,我是這么答的(面試官必問)

    今天介紹一下Java的兩個集合類,ArrayList和LinkedList,這兩個集合的知識點幾乎可以說面試必問的。感興趣的朋友跟隨小編一起看看吧
    2020-08-08
  • Mybatis傳遞多個參數(shù)的三種實現(xiàn)方法

    Mybatis傳遞多個參數(shù)的三種實現(xiàn)方法

    這篇文章主要介紹了Mybatis傳遞多個參數(shù)的三種實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • 多線程下怎樣保證OkHttpClient的線程安全

    多線程下怎樣保證OkHttpClient的線程安全

    這篇文章主要介紹了多線程下怎樣保證OkHttpClient的線程安全問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • java利用Calendar類打印日歷

    java利用Calendar類打印日歷

    這篇文章主要為大家詳細介紹了java利用Calendar類打印日歷,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 基于servlet的執(zhí)行原理與生命周期(全面解析)

    基于servlet的執(zhí)行原理與生命周期(全面解析)

    下面小編就為大家分享一篇servlet的執(zhí)行原理與生命周期全面解析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Java面試突擊之Bean作用域詳解

    Java面試突擊之Bean作用域詳解

    Spring?框架作為一個管理?Bean?的?IoC?容器,那么?Bean?自然是?Spring?中的重要資源了,那?Bean?的作用域是什么意思?又有幾種類型呢?接下來我們一起來看
    2022-08-08
  • Java設計模式中的外觀模式詳解

    Java設計模式中的外觀模式詳解

    外觀模式為多個復雜的子系統(tǒng),提供了一個一致的界面,使得調(diào)用端只和這個接口發(fā)生調(diào)用,而無須關系這個子系統(tǒng)內(nèi)部的細節(jié)。本文將通過示例詳細為大家講解一下外觀模式,需要的可以參考一下
    2023-02-02
  • DispatcherServlet處理器的適配和處理解析

    DispatcherServlet處理器的適配和處理解析

    這篇文章主要為大家介紹了DispatcherServlet的處理器的適配和處理流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06

最新評論

万全县| 塘沽区| 灌云县| 泗洪县| 鄯善县| 福清市| 城步| 绥中县| 柯坪县| 鹤岗市| 韶山市| 邵阳市| 江陵县| 建瓯市| 雅江县| 富川| 兰溪市| 辽宁省| 沿河| 万山特区| 措美县| 布尔津县| 肥西县| 平安县| 美姑县| 松滋市| 新巴尔虎右旗| 旅游| 淮滨县| 密云县| 宜城市| 屏东市| 洪湖市| 江都市| 拉萨市| 昭觉县| 临猗县| 衡水市| 岚皋县| 龙州县| 克山县|