Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: runnable, callable

В чём разница между Runnable и Callable?

Вопрос проверяет понимание базовых интерфейсов для выполнения задач в многопоточном коде и различий в их возможностях.

Короткий ответ

Runnable описывает задачу без возвращаемого результата. Callable может возвращать результат и выбрасывать проверяемые исключения. Runnable используется в простых сценариях. Callable чаще применяют вместе с пулами потоков. Выбор зависит от того, нужен ли результат выполнения.

Длинный ответ

Runnable и Callable решают одну задачу — описывают код, который должен быть выполнен в другом потоке, но делают это по-разному.

Определение

Runnable — функциональный интерфейс для задачи без результата.
Callable — функциональный интерфейс для задачи, возвращающей результат.

Ключевые различия

Перед перечислением важно отметить: основная разница — в контракте выполнения.

1) Возвращаемое значение

  1. Runnable

    • метод run()

    • не возвращает результат

  2. Callable

    • метод call()

    • возвращает значение

2) Работа с исключениями

  1. Runnable

    • не может бросать checked exception

  2. Callable

    • может бросать checked exception

3) Интеграция с пулами потоков

  1. Runnable

    • подходит для fire-and-forget задач

  2. Callable

    • используется вместе с Future

Пример идеи

Callable<Integer> task = () -> 42;
Future<Integer> result = executor.submit(task);

Краткий вывод

Runnable подходит для простых задач без результата, а Callable — для вычислений, где нужен результат или обработка ошибок.

Уровень

  • Рейтинг:

    5

  • Сложность:

    4

Навыки

  • Java

    Java

Ключевые слова

#runnable

#callable

Подпишись на Java Developer в телеграм