The submit(...) method is an executor framework extension introduced in ExecutorService interface.
Its main difference from execute(Runnable) is that submit(...) can accept a Callable (whereas execute() accepts only Runnable) and returns an instance of Future, which you can use later in the caller to retrieve the result asynchronously (potentially blocking until the computation performed by the Callable is completed).