我有一种将对象添加到队列中并检查队列大小的方法。如果队列大小达到最大容量,将发出警报,并且队列将删除第一个对象。以下是代码
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,并且仅引发一次警报。如果警报成功发出,则警报将被清除。只想知道任何更好的方法吗?
答案 0 :(得分:1)
如果您需要一次发出警报,则在队列大小为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();
}
}
}