private void consumeQueue(WaitQueue.Item item)
{
while (! isClosed()) {
try {
Packet packet;
// _dequeueCount.incrementAndGet();
packet = _queue.dequeue();
// _dequeueCount.decrementAndGet();
if (packet != null) {
// reset last exit with a new packet
_lastExitTime = Alarm.getCurrentTime();
if (log.isLoggable(Level.FINEST))
log.finest(this + " dequeue " + packet);
packet.unparkDequeue();
dispatch(packet, item);
}
else if (! waitForQueue(item)) {
return;