Функция случайных вопросов поможет вам подумать и проверить свои знания.
Попробуйте ответить на вопросы устно или в уме, а затем нажмите на сам вопрос, чтобы сравнить свой ответ и проанализировать его.
Что вы упустили? А может быть, вы знаете гораздо больше? Так или иначе, это хорошая практика. :)
В базе данных хранится около 500 вопросов, охватывающих различные темы из категорий таких как Core-1, Core-2, Многопоточность, SQL, Hibernate, Spring, Паттерны, Алгоритмы.
В категории M-BOSS находятся вопросы, которые могут встречаться на технических собеседованиях Java - разработчиков. (взято из открытых источников)
Приглашаю вас присоединиться к телеграм-группе для обратной связи и получения информации о будущих обновлениях! Хочу вас также пригласить в дискорд, для общения на различные темы о Java и не только в ламповой атмосфере.
Дискорд будет пополняться не сложными практическими задачами, которые будут помогать прокачивать навыки технического мышления!
Заходите на канал "задачи-по-java" и оттачивайте свои навыки!
Помните: Именно кропотливый труд над собой, делает из вас профессионала высокого уровня!
Приятного обучения!

Чем Runnable отличается от Callable?

Многопоточность

`Runnable` и `Callable` - это два интерфейса в Java, которые используются для выполнения задач в многопоточной среде, но есть некоторые различия между ними. `Runnable` является функциональным интерфейсом, определенным в пакете `java.lang` . Он имеет один метод `run()` , который выполняет задачу в отдельном потоке. Метод `run()` не возвращает результат и не генерирует исключения. Обычно `Runnable` используется с помощью класса `Thread` , который принимает `Runnable` в качестве аргумента конструктора. Пример использования `Runnable` : Runnable runnable = () -> { // выполнение задачи }; Thread thread = new Thread(runnable); thread.start(); `Callable` также является функциональным интерфейсом, определенным в пакете `java.util.concurrent` . Он имеет один метод `call()` , который выполняет задачу в отдельном потоке и возвращает результат. Метод `call()` может генерировать проверяемые исключения. `Callable` используется с помощью класса `ExecutorService` , который принимает `Callable` в качестве аргумента методов выполнения задач. Пример использования `Callable` : Callable<Integer> callable = () -> { // выполнение задачи return 42; // возвращаемый результат }; ExecutorService executorService = Executors.newSingleThreadExecutor(); Future<Integer> future = executorService.submit(callable); int result = future.get(); // получение результата executorService.shutdown(); Основные различия между `Runnable` и `Callable` : 1. `Runnable` не возвращает результат, в то время как `Callable` возвращает результат. 2. `Runnable` не генерирует проверяемые исключения, в то время как `Callable` может генерировать исключения. 3. `Runnable` используется с классом `Thread` , а `Callable` используется с классом `ExecutorService` . Выбор между `Runnable` и `Callable` зависит от требований вашей задачи. Если вам нужно только выполнить задачу без возврата результата, используйте `Runnable` . Если вам нужно выполнить задачу и получить результат, используйте `Callable` .

Открыть

Копировать ссылку

ДРУГОЙ ВОПРОС