Junior — Middle
Leg uit wat de verschillen zijn tussen de interfaces Callable en Runnable in Java en wanneer het beter is om elk van hen te gebruiken.
sobes.tech AI
Antwoord van 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.