Java 仅在while循环中执行一次
我有一个方法可以向队列中添加对象,还可以检查队列大小。如果队列大小达到最大容量,将发出警报,队列将删除第一个对象。下面是代码Java 仅在while循环中执行一次,java,while-loop,boolean,Java,While Loop,Boolean,我有一个方法可以向队列中添加对象,还可以检查队列大小。如果队列大小达到最大容量,将发出警报,队列将删除第一个对象。下面是代码 private SomeQueue queue; private boolean raiseAlarmOnce = true; private boolean alarmRaised; private AlarmConnection alarmConnection; void addToQueue(Object obj) { queue.add(obj);
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();
}
}
}
请提供一个没有任何编译器错误的代码示例。此代码是否有问题,或者您是否正在寻找一个?@Abion47这是一个总体思路,而不是详细的代码。我只想确定在while loopraiseAlarm=queue.size>1000中只执行一次的最佳实践是什么;不需要那个零件