//定时刷新
class Refures
{
//用于累加周期
long start = 0L;
long end = 0L;
//控制时钟周期
final long invet = 1000L*60*60L;
//这个运算可能要消耗1ms 忽略不计
boolean action()
{
//使用系统的计时器,永久有效。
start = System.currentTimeMillis();
if (start > end)
{
end = start + invet;
return true;
}
else
{
return false;
}
}
}
class YourInterface
{
static int callTimes = 0;
static Refures refures = new Refures();
//被调接口
static void youInterface()
{
//每1小时,就初始化一次
if (refures.action())
{
callTimes = 0;
}
callTimes++;
if (callTimes>=100)
{
return;
}
}
}
2.map<String,Long[]> map = new HashMap(String,Long[] ); key=用户标示,value={一分钟内首次访问时间,访问次数}
public void test(String username){
Long [] userParam = map.get(username);
if(userParam != null){//不是第一次访问
Long 时间差 = 当前时间 - userParam[0]
if(时间差小于一分钟){
int num = userParam[1];
if(num >= 10){
system.out.println("一分钟最多访问10次");
}else{
map.put(username,{userParam[0],userParam[1]+1});
user.getInterface();//调用接口
}
}else{
String [] addFirst = {当前时间,1};
map.put(username ,addFirst);
user.getInterface();//调用接口
}
}else{//第一次访问
String [] addFirst = {当前时间,1};
map.put(username ,addFirst);
user.getInterface();//调用接口
}
}