Я обнаружил, что есть два способа (отправить и выполнить), чтобы добавить 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, представляющий результат вычисления.