Back to questions
СБЕР
МТС
Формат кода
Северсталь-Ифоком
Junior — Middle
75
В чем отличие между интерфейсами Runnable и Callable в Java, и как их используют?
Companies where asked
Answer from AI
sobes.tech AI
Интерфейсы Runnable и Callable используются для выполнения задач в отдельных потоках, но имеют ключевые отличия:
- Runnable не возвращает результат и не может выбрасывать проверяемые исключения. Метод
run()возвращает void. - Callable<V> возвращает результат типа V и может выбрасывать исключения. Метод
call()возвращает значение.
Использование:
// Runnable
Runnable task = () -> System.out.println("Выполнение задачи");
new Thread(task).start();
// Callable
Callable<Integer> taskWithResult = () -> {
// какая-то логика
return 123;
};
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Integer> future = executor.submit(taskWithResult);
Integer result = future.get();
executor.shutdown();
Callable удобен, когда нужно получить результат из потока или обработать исключения.