今天有一個需求需要随時更新資料需要及時删除過期資料,就用到隊列了。每執行一次定時任務就往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 {