天天看點

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 {

繼續閱讀