При работе с многопоточностью в 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.
Перейти в телеграм, чтобы получить результаты теста



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