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

Как правильно остановить поток? Для чего нужны методы stop(), interrupt(), interrupted(), isInterrupted()?

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

Для правильной остановки потока в Java рекомендуется использовать методы `interrupt()` и проверку флага прерывания с помощью методов `isInterrupted()` или `interrupted()` . Давайте рассмотрим каждый из этих методов: 1. `interrupt()` : Метод `interrupt()` используется для установки флага прерывания для потока. Он не останавливает непосредственно выполнение потока, а лишь устанавливает флаг прерывания. 2. `isInterrupted()` : Метод `isInterrupted()` проверяет, установлен ли флаг прерывания для текущего потока. Он возвращает `true` , если флаг прерывания установлен, и `false` , если нет. 3. `interrupted()` : Метод `interrupted()` является статическим методом класса `Thread` . Он проверяет, установлен ли флаг прерывания для текущего потока и сбрасывает его. Он также возвращает `true` , если флаг прерывания был установлен, и `false` , если нет. 4. `stop()` : Метод `stop()` является устаревшим и не рекомендуется к использованию. Он может вызвать непредсказуемое состояние и привести к проблемам синхронизации и утечкам ресурсов. Для корректной остановки потока рекомендуется использовать следующий подход: 1. Внутри кода потока регулярно проверяйте флаг прерывания с помощью метода `isInterrupted()` или `interrupted()` . 2. Если флаг прерывания установлен, завершите выполнение потока, выйдя из его основного цикла или метода. 3. После выхода из основного цикла или метода, поток завершится естественным образом. Пример использования методов `interrupt()` , `isInterrupted()` и `interrupted()` : public class MyThread extends Thread { public void run() { while (!isInterrupted()) { // выполнение задачи потока } } } public class Main { public static void main(String[] args) { MyThread thread = new MyThread(); thread.start(); // Остановка потока thread.interrupt(); } } В этом примере мы создаем класс `MyThread` , который наследуется от класса `Thread` и переопределяет метод `run()` . Внутри метода `run()` мы проверяем флаг прерывания с помощью `isInterrupted()` . В методе `main()` мы создаем экземпляр `MyThread` , запускаем его с помощью `start()` и останавливаем с помощью `interrupt()` . Важно отметить, что остановка потока должна быть реализована с учетом безопасности и корректности, чтобы избежать возможных проблем синхронизации и утечек ресурсов.

Открыть

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

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