code: public boolean shutdown(long timeout, TimeUnit unit) {
      // Guard against double shutdowns (bug 8).
      if (shuttingDown) {
        getLogger().info("Suppressing duplicate attempt to shut down");
        return false;
      }
      shuttingDown = true;
      String baseName = conn.getName();
      conn.setName(baseName + " - SHUTTING DOWN");
      boolean rv = false;
      try {
        // Conditionally wait
        if (timeout > 0) {
          conn.setName(baseName + " - SHUTTING DOWN (waiting)");
          rv = waitForQueues(timeout, unit);
        }
      } finally {
        // But always begin the shutdown sequence
        try {
          conn.setName(baseName + " - SHUTTING DOWN (telling client)");
          conn.shutdown();
          conn.setName(baseName + " - SHUTTING DOWN (informed client)");
          tcService.shutdown();
        } catch (IOException e) {
          getLogger().warn("exception while shutting down", e);
        }
      }
      return rv;
    }
docs: Shut down this client gracefully.
  
  @param timeout the amount of time for shutdown
  @param unit the TimeUnit for the timeout
  @return result of the shutdown request