Code example for AtomicInteger

Methods: decrementAndGetset

     * @throws org.apache.qpid.server.queue.MessageCleanupException when an attempt was made to remove the message from the message store and that 
     *                                 failed 
    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)