Runnable
- это функциональный интерфейс, представляющий задачу, которая может быть выполнена потоком. Он имеет один метод run()
, который не принимает аргументов1 и не возвращает значения. Используется для выполнения фоновых операций, не требующих результата.
Callable
- это параметризованный интерфейс, представляющий задачу, которая также может быть выполнена потоком. Он имеет один метод call()
, который возвращает дженерик-тип <V>
(произвольное значение)2 и может выбрасывать исключение (типа Exception
). Подходит для задач, результат которых необходимо использовать.
Основные отличия:
Признак | Runnable | Callable |
---|---|---|
Возвращаемое значение | Нет | Да (тип {@code <V>}) |
Исключения | Нет (метод {@code run}) | Да (метод {@code call}) |
Метод | {@code void run()} | {@code V call() throws Exception} |
Использова |
Runnable
- это функциональный интерфейс, представляющий задачу, которая может быть выполнена потоком. Он имеет один метод run()
, который не принимает аргументов1 и не возвращает значения. Используется для выполнения фоновых операций, не требующих результата.
Callable
- это параметризованный интерфейс, представляющий задачу, которая также может быть выполнена потоком. Он имеет один метод call()
, который возвращает дженерик-тип <V>
(произвольное значение)2 и может выбрасывать исключение (типа Exception
). Подходит для задач, результат которых необходимо использовать.
Основные отличия:
Признак | Runnable | Callable |
---|---|---|
Возвращаемое значение | Нет | Да (тип {@code <V>}) |
Исключения | Нет (метод {@code run}) | Да (метод {@code call}) |
Метод | {@code void run()} | {@code V call() throws Exception} |
Использова |
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.