Junior — Middle
Wat is het verschil tussen de methode submit in Executor en de methode start in Thread bij het uitvoeren van taken in Java?
sobes.tech AI
Antwoord van 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();