Junior — Middle
Каква е разликата между интерфейсите Runnable и Callable в Java и как се използват?
sobes.tech AI
Отговор от 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 удобен, когда нужно получить результат из потока или обработать исключения.