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

java多線程消息隊列的實現(xiàn)代碼

 更新時間:2017年07月24日 10:06:59   作者:Mr_linjw  
本篇文章主要介紹了java多線程消息隊列的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文介紹了java多線程消息隊列的實現(xiàn)代碼,分享給大家,希望對大家有幫助,順便也自己留個筆記

1、定義一個隊列緩存池:

 //static修飾的成員變量和成員方法獨立于該類的任何對象。也就是說,它不依賴類特定的實例,被類的所有實例共享。
private static List<Queue> queueCache = new LinkedList<Queue>(); 

2、定義隊列緩沖池最大消息數(shù),如果達到該值,那么隊列檢入將等待檢出低于該值時繼續(xù)進行。

private Integer offerMaxQueue = 2000;

3、定義檢出線程,如果隊列緩沖池沒有消息,那么檢出線程會線程等待中

new Thread(){
    public void run(){
     while(true){
      String ip = null;
      try {
       synchronized (queueCache) {
        Integer size = queueCache.size();
        if(size==0){
//隊列緩存池沒有消息,等待。。。。     queueCache.wait();
        }
        Queue queue = queueCache.remove(0);

        if(isIpLock(queueStr)){//假若這個是一個多應(yīng)用的分布式系統(tǒng),那么這個判斷應(yīng)該是分布式鎖,這里說的鎖不是線程停止,而是跳過該消息,滯后處理
         queueCache.add(queue);該queue重新加入隊列緩沖池,滯后處理,
         continue;
        }else{
      ;//這里是處理該消息的操作。
        }
        size = queueCache.size();
        if(size<offerMaxQueue&&size>=0){     queueCache.notifyAll();//在隊列緩存池不超過最大值的前提下,假若檢入正在等待中,那么那么讓他們排隊檢入。
        }
       }
      } catch (Exception e) {
       e.printStackTrace();
      }finally{
       try {//檢出該消息隊列的鎖
        unIpLock(queueStr);
       } catch (Execption e) {//捕獲異常,不能讓線程掛掉
        e.printStackTrace();
       } 
                      }
      }
   }.start();

4、檢入隊列

synchronized (queueCache) {
while(true){
Integer size = queueCache.size();
if(size>=offerMaxQueue){
      try {
       queueCache.wait();
continue;//繼續(xù)執(zhí)行等待中的檢入任務(wù)。
 } catch (InterruptedException e) {
   e.printStackTrace();
 }
 }//IF

if(size<=offerMaxQueue&&size>0){
 queueCache.notifyAll();
}
break;//檢入完畢
}//while
}

5、鎖方法實現(xiàn)

/**
  * 鎖
  * @param ip
  * @return
  * @throws 
  */
 public Boolean isLock(String queueStr) {
  return this.redisManager.setnx(queueStr+"_lock", "LOCK", 10000)!=1;
 }
 //解鎖
 public void unIpLock(String queueStr) {
  if(ip!=null){
   this.redisManager.del(queueStr+"_lock");
//  lock.unlock();
  }
 }

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

相關(guān)文章

  • Java搶紅包的紅包生成算法

    Java搶紅包的紅包生成算法

    現(xiàn)在日常生活中搶紅包已經(jīng)成了日常游戲,本篇文章主要介紹了Java搶紅包的紅包生成算法,具有一定的參考價值,有需要的可以了解一下。
    2016-11-11
  • RocketMQ消息中間件超詳細解讀

    RocketMQ消息中間件超詳細解讀

    這篇文章主要介紹了RocketMQ消息中間件超詳細解讀,RocketMQ作為一款純java、分布式、隊列模型的開源消息中間件,支持事務(wù)消息、順序消息、批量消息、定時消息、消息回溯等,本文就來詳細解讀一下,需要的朋友可以參考下
    2023-05-05
  • Java+Swing實現(xiàn)經(jīng)典五子棋游戲

    Java+Swing實現(xiàn)經(jīng)典五子棋游戲

    五子棋是世界智力運動會競技項目之一,是一種兩人對弈的純策略型棋類游戲,是世界智力運動會競技項目之一。本文將采用Java Swing實現(xiàn)這一經(jīng)典游戲,需要的可以參考一下
    2022-01-01
  • IDEA版最新MyBatis程序配置教程詳解

    IDEA版最新MyBatis程序配置教程詳解

    這篇文章主要介紹了IDEA版最新MyBatis程序配置教程詳解,需要的朋友可以參考下
    2020-07-07
  • sentinel整合ribbon與fallback流程分步講解

    sentinel整合ribbon與fallback流程分步講解

    這篇文章主要介紹了sentinel整合ribbon與fallback分步流程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Java反射獲取class對象方式解析

    Java反射獲取class對象方式解析

    這篇文章主要介紹了Java反射獲取class對象方式解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Java線程創(chuàng)建與Thread類的使用方法

    Java線程創(chuàng)建與Thread類的使用方法

    這篇文章主要介紹了Java線程創(chuàng)建與Thread類的使用方法,圍繞java多線程中Thread類的使用以及有關(guān)線程對象創(chuàng)建和常用方法的相關(guān)資料展開詳細內(nèi)容,具有一定的參考價值,需要的下伙伴可以參考一下
    2022-06-06
  • 解決org.apache.ibatis.binding.BindingException:?Invalid?bound?statement?(not?found)問題(最新推薦)

    解決org.apache.ibatis.binding.BindingException:?Invalid?boun

    這篇文章主要介紹了解決org.apache.ibatis.binding.BindingException:?Invalid?bound?statement?(not?found)問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • SpringBoot中優(yōu)化if-else語句的七種方法

    SpringBoot中優(yōu)化if-else語句的七種方法

    if-else語句是控制流程的基本工具,但過度使用會使代碼變得復(fù)雜且難以維護,在SpringBoot , SpringCloud項目中,優(yōu)化if-else結(jié)構(gòu)變得尤為重要,本文將深入探討七種策略,旨在減少SpringBoot , SpringCloud項目中 if-else的使用,需要的朋友可以參考下
    2024-07-07
  • BUUCTF-easy java WEB-INF/web.xml泄露漏洞及其利用方式

    BUUCTF-easy java WEB-INF/web.xml泄露漏洞及其利用方式

    這篇文章主要介紹了BUUCTF-easy java WEB-INF/web.xml泄露漏洞及其利用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07

最新評論

武夷山市| 敦煌市| 荆门市| 霞浦县| 崇礼县| 宜川县| 台北市| 龙胜| 海南省| 图们市| 资源县| 博爱县| 保亭| 潢川县| 随州市| 渝北区| 凤山市| 高碑店市| 沽源县| 阜南县| 治县。| 嘉黎县| 闵行区| 丁青县| 桐梓县| 资源县| 洪泽县| 温宿县| 仁化县| 武汉市| 西畴县| 神池县| 六安市| 台北县| 福州市| 福贡县| 丹寨县| 门头沟区| 韶关市| 大姚县| 翼城县|