亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

JAVA流控及超流控后的延遲處理實例

2019-11-26 15:19:53
字體:
來源:轉載
供稿:網友

本文實例講述了JAVA流控及超流控后的延遲處理方法。分享給大家供大家參考。具體實現方法如下:

流控檢查(每半秒累計,因此最小留空閥值只能做到每秒2條):

復制代碼 代碼如下:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.lang.Thread;
 
/**
 * 流量控制
 *
 * @author chenx
 */
public class OverflowController {
 
    private int maxSendCountPerSecend; // 該條鏈路上流控閥值
    private Date sendTime = new Date();
    private int sendCount = 0; // 該條鏈路上發送的數量
 
    public OverflowController(int maxSendCountPerSecend) {
        if (maxSendCountPerSecend < 2) {
            maxSendCountPerSecend = 2;
        }
 
        this.maxSendCountPerSecend = maxSendCountPerSecend;
    }
 
    public int getMaxSendCountPerSecend() {
        if (getMilliseconds(new Date()) >= 500) {
            return maxSendCountPerSecend / 2;
        }
 
        return maxSendCountPerSecend - (maxSendCountPerSecend / 2);
    }
 
    /**
     * 是否超流控
     */
    public boolean isOverflow(int sendNum) {
        synchronized (this) {
            Date now = new Date();
            if (now.getTime() - sendTime.getTime() >= 500) {
                sendTime = now;
                sendCount = sendNum;
            } else {
                if (sendCount + sendNum > getMaxSendCountPerSecend()) {
                    return true;
                } else {
                    sendCount += sendNum;
                }
            }
 
            return false;
        }
    }
 
    /**
     * 獲取指定時間的毫秒數
     */
    private int getMilliseconds(Date date) {
        SimpleDateFormat df = new SimpleDateFormat("SSS");
        return Integer.valueOf(df.format(date));
    }
 
    public static void main(String[] args) throws InterruptedException {
        OverflowController oc = new OverflowController(50);
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
        for (int i = 0; i <= 100; i++) {
            if (oc.isOverflow(1)) {
                System.out.println(i + "-isOverflow-" + df.format(new Date()));
            } else {
                System.out.println(i + "-sendOk-" + df.format(new Date()));
            }
 
            Thread.sleep(10);
        }
    }
}

超流控后的延遲處理,由于java中沒有.net的“延遲委托”一說:
復制代碼 代碼如下:
ThreadPool.RegisterWaitForSingleObject(
 WaitHandle waitObject,
      WaitOrTimerCallback callBack,
      Object state,
     int millisecondsTimeOutInterval,
     bool executeOnlyOnce
)

Java下需實現一個簡單的延遲隊列:

復制代碼 代碼如下:
import java.util.concurrent.Delayed;
import java.util.concurrent.TimeUnit;
 
public class DelayEntry implements Delayed {
 
    private int count;
    private long dequeuedTimeMillis; // 出隊列時間
 
    public int getCount() {
        return count;
    }
 
    public void setCount(int count) {
        this.count = count;
    }
 
    public long getDequeuedTimeMillis() {
        return dequeuedTimeMillis;
    }
 
    public DelayEntry(long delayMillis) {
        dequeuedTimeMillis = System.currentTimeMillis() + delayMillis;
    }
 
    @Override
    public int compareTo(Delayed o) {
        DelayEntry de = (DelayEntry) o;
        long timeout = dequeuedTimeMillis - de.dequeuedTimeMillis;
        return timeout > 0 ? 1 : timeout < 0 ? -1 : 0;
    }
 
    @Override
    public long getDelay(TimeUnit unit) {
        return dequeuedTimeMillis - System.currentTimeMillis();
    }
}

 
復制代碼 代碼如下:
import java.util.concurrent.DelayQueue;
 
public class DelayService {
 
    public void run() {
        DelayQueue<DelayEntry> queue = new DelayQueue<DelayEntry>();
        DelayConsumer delayConsumer = new DelayConsumer(queue);
        delayConsumer.start();
 
        for (int i = 0; i < 100; i++) {
            DelayEntry de = new DelayEntry(5000);
            de.setCount(i);
            System.out.println(System.currentTimeMillis() + "--------" + de.getCount());
            queue.add(de);
        }
    }
 
    class DelayConsumer extends Thread {
        DelayQueue<DelayEntry> queue;
        public DelayConsumer(DelayQueue<DelayEntry> queue) {
            this.queue = queue;
        }
 
        public void run() {
            while (true) {
                try {
                    DelayEntry de = queue.take();
                    System.out.println("queue size=" + queue.size());
                    System.out.println(de.getCount());
                    System.out.println(System.currentTimeMillis());
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
 
    public static void main(String[] args) {
        DelayService ds = new DelayService();
        ds.run();
    }
}

希望本文所述對大家的Java程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品久久二区二区91| 日韩资源在线观看| 久久免费精品日本久久中文字幕| 亚洲欧洲高清在线| 国产精品色婷婷视频| 国产一区二区av| 欧美日韩亚洲视频一区| 欧美性猛交xxxx乱大交3| 亚洲精品一区二区在线| 中文字幕欧美视频在线| 日韩高清电影好看的电视剧电影| 国产91精品黑色丝袜高跟鞋| 国产在线观看不卡| 成人久久18免费网站图片| 国产精品久久久久免费a∨| 成人免费xxxxx在线观看| 亚洲第一区第一页| 日韩欧美在线免费观看| 中文精品99久久国产香蕉| 韩国美女主播一区| 欧美日韩性视频| 日韩资源在线观看| 久久国产精品影片| 久久免费视频这里只有精品| 欧美孕妇毛茸茸xxxx| 午夜精品在线视频| 日韩精品在线视频美女| 久久在线免费观看视频| 日韩电视剧免费观看网站| 懂色av中文一区二区三区天美| 国产一区二区三区在线播放免费观看| 国产一区二区三区毛片| 国产精品久久中文| 欧美成人免费全部| 久久久久亚洲精品| 欧美成人精品一区| 欧美色图在线视频| 久久伊人免费视频| 亚洲国产成人精品电影| 国产成人精品日本亚洲| 高清一区二区三区四区五区| 国产成人综合亚洲| 日韩中文字幕第一页| 91亚洲午夜在线| 国产日韩一区在线| 欧美精品久久久久久久免费观看| 国产小视频91| 亚洲欧洲国产一区| 欧美贵妇videos办公室| 97视频国产在线| 欧美成人精品在线| 国产成人亚洲综合91精品| 亚洲男人天堂九九视频| 国产日韩欧美91| 亚洲精品aⅴ中文字幕乱码| 国产精品91在线| 日韩亚洲精品电影| 日韩大陆毛片av| 高清欧美性猛交xxxx黑人猛交| 成人h视频在线| 国产精品第二页| 国产一区二区三区在线看| 性日韩欧美在线视频| 国产精品99久久久久久久久久久久| 亚洲欧洲在线播放| 日韩av综合网站| 久久成人这里只有精品| 国产欧美一区二区三区久久人妖| 亚洲一区第一页| 欧美日韩在线另类| 九九热这里只有精品免费看| 国产精品美女久久| 国产精品久久久久久久app| 91亚洲精品视频| 欧美成人在线影院| 久久精品国产欧美亚洲人人爽| 欧美人与物videos| 精品视频在线播放| 欧美成人激情在线| 国产91|九色| 色综合视频网站| 国产精品美女久久久久av超清| 91丨九色丨国产在线| 成人高h视频在线| 欧美性极品xxxx娇小| 亚洲一区二区三区久久| 亚洲精品大尺度| 日韩av在线高清| 97精品国产91久久久久久| 欧美体内谢she精2性欧美| 久久久中精品2020中文| 成人免费高清完整版在线观看| 欧美性极品少妇精品网站| 成人午夜小视频| 久久精品美女视频网站| 色婷婷综合成人av| 高清欧美性猛交xxxx黑人猛交| 欧美激情综合色综合啪啪五月| 久久99精品久久久久久青青91| 91老司机在线| 久久久久久一区二区三区| 一区二区福利视频| 日韩女优人人人人射在线视频| 国产一区二区三区在线观看网站| 亚洲午夜av久久乱码| 亚洲精品国产精品国产自| 欧美国产日产韩国视频| 亚洲精品一区中文字幕乱码| 亚洲3p在线观看| 一本大道香蕉久在线播放29| 欧美特级www| 欧美—级高清免费播放| 久久久久久国产精品三级玉女聊斋| 国产精品精品视频| 亚洲已满18点击进入在线看片| 欧美专区福利在线| 欧美日韩黄色大片| 成人妇女淫片aaaa视频| 欧美二区在线播放| 成人动漫网站在线观看| 国产欧美在线视频| 欧美激情在线有限公司| 久久久久久久亚洲精品| 国产日韩欧美中文在线播放| 欧美日韩电影在线观看| 欧美大胆在线视频| 好吊成人免视频| 欧美精品在线免费观看| 亚洲免费av片| 久久久久五月天| 2018日韩中文字幕| 成人黄色片在线| 国内精品400部情侣激情| 亚洲精品成人久久久| 国产精品久久一区| 欧美在线视频免费| 92福利视频午夜1000合集在线观看| 丝袜亚洲欧美日韩综合| 最近中文字幕2019免费| 色悠久久久久综合先锋影音下载| 欧美精品在线极品| 精品久久久久久久中文字幕| 亚洲www在线观看| 国产精品福利在线| 国产欧美一区二区三区在线| 97精品久久久| 久久久久久国产| 日韩欧美国产激情| 亚洲欧美精品伊人久久| 疯狂做受xxxx高潮欧美日本| 国产精品久久视频| 国产精品九九久久久久久久| 国产精品久久久久久亚洲调教| 色综合久综合久久综合久鬼88| 亚洲精品小视频| 国产一区二区三区网站| 久久在线精品视频| 国产经典一区二区| 国产999精品久久久| 91成人在线视频| 国产精品中文在线| 久热精品视频在线观看| 欧美日韩一区二区在线播放| 日韩精品亚洲元码|