public void close() throws JMSException
public synchronized void close() throws JMSException
   public void close() throws JMSException   {      try      {         acquireLock();         if (closed)         {            throw new IllegalStateException("Consumer is already closed");         }            if (log.isTraceEnabled()) { log.trace(this.id + " close"); }            closed = true;            //On close we only disconnect the consumer from the Channel we don't actually remove it         //This is because it may still contain deliveries that may well be acknowledged after         //the consumer has closed. This is perfectly valid.         disconnect();                  Dispatcher.singleton.unregisterTarget(this.id);      }      finally      {         releaseLock();      }   }