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