Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70% Забронировать скидку
10 Июл 2023
2 мин
1292

Разница между интерфейсами Runnable и Callable в Java

При работе с многопоточностью в Java, часто приходится сталкиваться с задачей создания отдельного потока. Для этого в Java существуют два основных интерфейса

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

Интерфейс Runnable был представлен в Java с самого начала и его метод run() не возвращает результат и не может бросить проверяемое исключение. Это делает Runnable удобным для простых задач, которые не требуют возвращения результата или обработки исключений. Например, если требуется просто запустить какую-то операцию в отдельном потоке.

Runnable runnable = () -> {
    System.out.println("Running in a separate thread");
};
new Thread(runnable).start();

Интерфейс Callable же был введен в Java 5 и представляет собой более универсальный инструмент для работы с потоками. Метод call() этого интерфейса возвращает результат и может бросить проверяемое исключение. Это делает Callable более подходящим для сложных задач, где требуется обработка исключений и возвращение результата.

Callable<Integer> callable = () -> {
    return 123;
};
FutureTask<Integer> futureTask = new FutureTask<>(callable);
new Thread(futureTask).start();

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

Добавить комментарий

Подарок
Забрать подарок