Wouldn't extending Callable be more suited? Callable allow you to check, via Future, whether the execution has completed successfully or with an exception, and it can propagate exceptions back to client without you having to add extra logic to handle/synchronize that.