我有一个方法可以将对象添加到队列中,还可以检查队列大小。如果队列大小达到最大容量,则会发出警报,队列将移除第一个对象。以下是代码
private SomeQueue queue;
private boolean raiseAlarmOnce = true;
private boolean alarmRaised;
private AlarmConnection alarmConnection;
void addToQueue(Object obj) {
queue.add(obj);
while (queue.size() > 1000) {
queue.remove();
if (m_raiseAlarmOnce) {
// raiseAlarm mtheod will return boolean value to indicate
// the result of raising alarm
m_alarmRaised = alarmConnection.raiseAlarm();
raiseAlarmOnce = false;
}
}
m_raiseAlarmOnce = true;
if (m_alarmRaised) {
alarmConnection.clear();
m_alarmRaised = false;
}
}
当队列大于1000时,队列会不断删除obj,只会告警一次。如果告警触发成功,告警将被清除。只是想知道有什么更好的方法吗?
发布于 2019-02-20 04:34:36
如果您需要发出警报一次,当队列大小为1001、1002等时,而不是每次迭代一次,则在使用标志时发出警报
我建议在使用线程或单例变量时使用局部变量。
void addToQueue(Object obj) {
queue.add(obj)
boolean raisAlarm = false;
while (queue.size() > 1000) {
queue.remove();
raisAlarm = true;
}
if (raisAlarm) {
// raiseAlarm mtheod will return boolean value to indicate
// the result of raising alarm
boolean m_alarmRaised = alarmConnection.raiseAlarm();
if (m_alarmRaised) {
alarmConnection.clear();
}
}
}
https://stackoverflow.com/questions/54774173
复制相似问题