Junior — Middle
61
Объясните отличия между интерфейсами Callable и Runnable в Java и когда предпочтительнее использовать каждый из них.
Компании, где спрашивали
ООО Ренью
Ответ от нейросети
sobes.tech AI
Интерфейсы Runnable и Callable в Java используются для определения задач, которые могут выполняться в отдельных потоках, но имеют ключевые отличия:
-
Runnable:
- Метод
run()не возвращает результат и не может выбросить проверяемые исключения. - Используется, когда задача не требует возвращаемого значения.
- Пример:
Runnable task = () -> System.out.println("Выполнение задачи"); new Thread(task).start();
- Метод
-
Callable<V>:
- Метод
call()возвращает результат типаVи может выбросить исключения. - Используется, когда нужно получить результат выполнения задачи или обработать исключения.
- Обычно применяется с
ExecutorServiceиFutureдля получения результата асинхронно. - Пример:
Callable<Integer> task = () -> { // Некоторая вычислительная логика return 42; }; ExecutorService executor = Executors.newSingleThreadExecutor(); Future<Integer> future = executor.submit(task); Integer result = future.get(); executor.shutdown();
- Метод
Когда использовать:
- Если нужна простая задача без результата —
Runnable. - Если требуется результат или обработка исключений —
Callable.