Middle
166
questionbank
В чем заключается различие между методами submit() и execute() в пуле потоков?
AI答案
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();