Code example for AtomicInteger
Methods: decrementAndGet, set
* @throws org.apache.qpid.server.queue.MessageCleanupException when an attempt was made to remove the message from the message store and that
public void decrementReference()
int count = _referenceCount.decrementAndGet();
// note that the operation of decrementing the reference count and then removing the message does not
// have to be atomic since the ref count starts at 1 and the exchange itself decrements that after
// the message has been passed to all queues. i.e. we are
// not relying on the all the increments having taken place before the delivery manager decrements.
if (count == 0)
// set the reference count way below 0 so that we can detect that the message has been deleted
// this is to guard against the message being spontaneously recreated (from the mgmt console)
// by copying from other queues at the same time as it is being removed.
// must check if the handle is null since there may be cases where we decide to throw away a message
// and the handle has not yet been constructed
if (_handle != null)