Назад к вопросам
Middle
98
questionbank
В чем заключается различие между методами submit() и execute() в пуле потоков?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
submit() принимает задачи Runnable или Callable, возвращает Future для получения результата или проверки статуса.
execute() принимает только задачи Runnable, не предусматривает возврата результата.
Ключевые различия:
| Метод | Тип задачи | Возврат значения | Обработка исключений |
|---|---|---|---|
execute() |
Runnable |
Нет (void) |
Перебрасываются обратно в поток-исполнитель |
submit() |
Runnable и Callable |
Future<?> |
Инкапсулируются в Future |
Пример использования submit() с Callable:
// Пример класса с задачей, возвращающей результат
class MyCallable implements Callable<String> {
@Override
public String call() throws Exception {
// Выполняем какую-то работу и возвращаем результат
return "Задача выполнена";
}
}
//...
ExecutorService executor = Executors.newFixedThreadPool(2);
Future<String> future = executor.submit(new MyCallable());
try {
String result = future.get(); // Блокирующее получение результата
System.out.println(result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
executor.shutdown();
Пример использования execute() с Runnable:
// Пример класса с задачей без возврата результата
class MyRunnable implements Runnable {
@Override
public void run() {
// Выполняем какую-то работу
System.out.println("Задача выполняется");
}
}
//...
ExecutorService executor = Executors.newFixedThreadPool(2);
executor.execute(new MyRunnable());
executor.shutdown();