Suggestion from Andrew:
For a distributed implementation it is useful for applications to provide some additional information (eg. priority or a preference as to where they might execute). Given that ManagedExecutorService extends ExecutorService which already specifies the signatures to submit(), and this is a less common use case, it might be better to have this be an interface that extends Callable and provides something like Properties getExecutionProperties(). This should definitely be optional, and could fall back to local execution.