Создавал ли Callable в Java

«Создавал ли Callable в Java» — вопрос из категории Многопоточность, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, Callable в Java — это интерфейс, аналогичный Runnable, но с возможностью возвращать результат и бросать исключения. Используется с ExecutorService.

Пример:

Callable<Integer> task = () -> {
    Thread.sleep(1000);
    return 42;
};

ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Integer> future = executor.submit(task);

try {
    Integer result = future.get(); // Блокирующий вызов
    Log.d("CallableExample", "Result: " + result);
} catch (Exception e) {
    e.printStackTrace();
} finally {
    executor.shutdown();
}

Отличие от Runnable:

  • Callable возвращает Future<T>, а Runnablevoid.
  • Может выбрасывать проверяемые исключения (Exception).
  • Используется в асинхронных задачах, где нужен результат.