[英]Only execute once in a while loop
我有一種將對象添加到隊列並檢查隊列大小的方法。 如果隊列大小達到最大容量,將發出警報,並且隊列將刪除第一個對象。 以下是代碼
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,並且僅引發一次警報。 如果警報成功發出,則警報將被清除。 只想知道任何更好的方法嗎?
如果您需要一次發出警報,則在隊列大小為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();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.