【发布时间】:2023-04-02 01:00:01
【问题描述】:
我有一种方法可以将对象添加到队列并检查队列大小。如果队列大小达到最大容量,则会发出警报并且队列将删除第一个对象。以下是代码
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,并且只发出一次警报。如果警报成功发出,警报将被清除。只是想知道有什么更好的方法吗?
【问题讨论】:
-
请提供一个没有任何编译错误的代码示例。
-
这段代码有问题还是您在寻找code review?
-
@Abion47 这是一个大体思路,不是详细代码。我只是想确定在 while 循环中只执行一次的最佳做法是什么
-
raiseAlarm = queue.size() > 1000;该部分不需要循环
标签: java while-loop boolean