Hao -
For a fire-and-forget command, if you never block on the result via Future.get(), then you don't know if the command succeeds/fails. This is possible, but has a few implications. It really only makes sense for this command to return Void, as you're relying on a side-effect, not the returned value.
All limitations imposed by Hystrix still apply (timeout + threadpool bounds + circuit health). So if you fire a large number of commands that consume a Hystrix thread, but your Tomcat thread walks away, then the Hystrix threads are still active even after the request is over. But as they are on a Hystrix thread, this is a shared resource, and properly prevents too many commands from being placed into this threadpool. The command instance lifetime is from the moment is gets constructed to the time it experiences a terminal event and cleans itself up. That may occur due to success/timeout/failure/rejection. So the object lifetimes are bounded but they may, in your case, exceed a request boundary.
Another implication is that since you're not waiting for any feedback from your command execution, you don't know in your application whether or not the command succeeded. Circuits will still open/close, and timeouts will still occur, but they will only be visible as side-effects in your metrics/dashboards, and by whatever effects your commands had on downstream systems.
Hope that helps,
Matt