Back to questions
Junior — Middle
63
Когда лучше использовать метод submit из Executor или метод start у Thread для запуска задач?
Answer from AI
sobes.tech AI
Метод start() у класса Thread используется для непосредственного запуска нового потока, в котором выполняется задача. Это низкоуровневый способ управления потоками, когда вы явно создаёте и запускаете потоки.
Метод submit() из Executor (например, ExecutorService) используется для отправки задач на выполнение в пул потоков. Это более высокоуровневый и гибкий способ, позволяющий управлять количеством потоков, переиспользовать их и получать результаты выполнения через Future.
Когда использовать:
- Если нужно быстро запустить простую задачу в отдельном потоке и не требуется управление потоками — можно использовать
Thread.start(). - Если приложение требует масштабируемости, управления пулом потоков, повторного использования потоков, контроля за выполнением задач и получения результатов — лучше использовать
Executor.submit().
Пример с Executor:
ExecutorService executor = Executors.newFixedThreadPool(5);
Future<Integer> future = executor.submit(() -> {
// какая-то задача
return 42;
});
Integer result = future.get();
executor.shutdown();