java流量控制

在java中有时候要用到流量控制,比如发Socket消息,websevice开放接口,对于账号或ip进行流量控制

今天自己写写了思路

新建一个类保存基本信息,

1.记录间隔时间 IDLE_TIME ,次数 TIMES,  IDLE_TIME /TIMES 就为流控

2.新建一个static List 对象用于保存时间点对象

3.每次发消息或接受消息前都把当前系统时间 System.currentTimeMillis(); 和相应的对象记录在list中

4,新建一个conrolFlow,如下。

//间隔时间
 public static long  IDLE_TIME = 1000 ; 
 //间隔时间的请求或发送次数
 public static long  TIMES = 1 ;
 
 public static Vector list = new Vector();
 
 public synchronized static void contrlFlow(){
  int count = 0;
  for(int i = list.size()-1 ; i>=0 ;i++){
   Long regTime = (Long) list.get(i);
   long currentTime = System.currentTimeMillis();
   long sleepTime  = regTime +  IDLE_TIME - TIMES;
   if(sleepTime>0){
    count++;
   }
   if(count>=TIMES){
    //TODO 需要进行流控,在此实现
    break;
   }
  }
 }

5.新建启动一个CleanThread  ,定期清理 list  对象,不然访问太多,java回内存溢出

总结:听起来很高级,实现起来还是很简单,主要还是思想很重要,语言是死地,人是活动

第一次发帖,希望有人拍砖

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值