Назад к вопросам
Junior — Middle
74
Какое отличие между методом submit у Executor и методом start у Thread при запуске задач в Java?
Ответ от нейросети
sobes.tech AI
Метод start() у класса Thread непосредственно запускает новый поток и вызывает метод run() в этом потоке. Это низкоуровневый способ создания и запуска потока.
Метод submit() у Executor (например, у ThreadPoolExecutor) отправляет задачу (Runnable или Callable) в пул потоков для асинхронного выполнения. В отличие от start(), submit() не создает новый поток напрямую, а использует существующие потоки из пула, что эффективнее с точки зрения ресурсов.
Основные отличия:
start()запускает новый поток каждый раз, что может быть дорого по ресурсам.submit()использует пул потоков, переиспользуя потоки и управляя их количеством.submit()возвращаетFuture, позволяющий получить результат или проверить статус задачи.
Пример:
ExecutorService executor = Executors.newFixedThreadPool(2);
Future<?> future = executor.submit(() -> {
System.out.println("Задача выполняется");
});
Thread thread = new Thread(() -> {
System.out.println("Поток запущен");
});
thread.start();