Я обнаружил, что есть два способа (отправить и выполнить), чтобы добавить Runnable в пул потоков, в чем разница?
В чем разница между методом submit и execute с ThreadPoolExecutor
Ответ 1
Отличие состоит в том, что execute не возвращает Future, поэтому вы не можете дождаться завершения Runnable и получить любое исключение, которое оно использует.
Ответ 2
Метод submit(...) - это расширение структуры исполнителя, введенное в интерфейсе ExecutorService.
Основное отличие от execute(Runnable) заключается в том, что submit(...) может принимать Callable<V> (тогда как execute() принимает только Runnable) и возвращает экземпляр Future<V>, который вы можете использовать позже в вызывающем получить результат асинхронно (потенциально блокировать до завершения вычисления, выполненного с помощью Callable).
Ответ 3
Submit представляется более общей формой выполнения. В частности, submit возвращает объект Future, представляющий результат вычисления.