缘由:某资源需要限制用户的访问,在单位时间内,只允许用户访问有限的次数。
import java.util.concurrent.atomic.AtomicInteger;
/**
* 定时清零的计数器
*/
public class TimerResetCounter {
private AtomicInteger counter;
private Long millisecondInterval;
private Long timeReferencePoint;
public TimerResetCounter(Long millisecondInterval) {
this.millisecondInterval = millisecondInterval;
this.counter = new AtomicInteger(0);
this.timeReferencePoint=System.currentTimeMillis();
}
public int getAndIncrement(){
if(System.currentTimeMillis()-timeReferencePoint>millisecondInterval){
timeReferencePoint=System.currentTimeMillis();
counter.set(0);
}
return counter.getAndIncrement();
}
}