天天看点

queue队列

今天有一个需求需要随时更新数据需要及时删除过期数据,就用到队列了。每执行一次定时任务就往queue中加一次数据,所以需要在一个独立于定时任务的类中加静态属性:

public static Queue<CB_SingleDolaryToday> queue = new LinkedList<>()

因为需要求元素和所以加静态属性   public static double sumDolary = 0.0;

在定时任务中需要更新队列并删除过期元素

/**

* 循环检测队列头元素,如果超期则移除该元素 并继续进行检测,直到检测出未超期

*/

//以头元素是否超期为条件,头元素没超期其他就不再超期

while (isDelay(DolaryTodayMark.queue.peek())) {

CB_SingleDolaryToday dt = DolaryTodayMark.queue.poll();

if (dt == null) {

break;

}

//并减去删除的元素

DolaryTodayMark.sumDolary = DolaryTodayMark.sumDolary - Double.parseDouble(dt.getDolary());

private boolean isDelay(CB_SingleDolaryToday dolaryToday) {

// 如果队列头元素为空,则返回false,说明没有元素超期

if (dolaryToday == null) {

return false;

} else if (System.currentTimeMillis() - dolaryToday.getTime() > delayTime) {

return true;

} else {

继续阅读