В чем разница между методом отправки и выполнения с ThreadPoolExecutor

Я обнаружил, что есть два способа (отправить и выполнить), чтобы добавить Runnable в пул потоков, в чем разница?

3 ответа

Решение

Разница в том, что execute не возвращает Future, так что вы не можете ждать завершения Runnable и получить любое исключение, которое он выбрасывает, используя это.

submit(...) Метод представляет собой расширение платформы исполнителя ExecutorService интерфейс.

Главное его отличие от execute(Runnable) в том, что submit(...) может принять Callable<V> (в то время как execute() принимает только Runnable) и возвращает экземпляр Future<V>, который вы можете использовать позже в вызывающей программе, чтобы получить результат асинхронно (потенциально блокируя до вычисления, выполненного Callable выполнен).

Submit представляется более общей формой выполнения. В частности, submit возвращает объект Future, который представляет результат вычисления.

ThreadPoolExecutor-1

ThreadPoolExecutor -2

Другие вопросы по тегам