Ответ
Да, 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>, аRunnable—void.- Может выбрасывать проверяемые исключения (
Exception). - Используется в асинхронных задачах, где нужен результат.