JavaRush /Курсы /Java Multithreading /Задачи на тему «текущее состояние нити»

Задачи на тему «текущее состояние нити»

Java Multithreading
5 уровень , 5 лекция
Открыта
Задачи на тему «текущее состояне нити» - 1

— Привет, Амиго! Как настроение?

— Отличное. Сегодня столько нового узнал. Особенно про состояния нитей.

— Да, отлично. Вот и проверим твои знания:

14
Задача
Java Multithreading, 5 уровень, 5 лекция
Недоступна
Мониторинг состояния нити
Cоздай класс нити LoggingStateThread, которая будет выводить в консоль все состояния (State) переданной в конструктор нити. Нить LoggingStateThread должна сама завершаться после остановки переданной в конструктор нити. Метод main не участвует в тестировании.
14
Задача
Java Multithreading, 5 уровень, 5 лекция
Недоступна
Switch для нитей
Обработай список нитей в зависимости от состояния: 1. Если нить еще не запущена, то запусти ее. 2. Если нить в ожидании, то прерви ее. 3. Если нить работает, то проверь маркер isInterrupted. 4. Если нить прекратила работу, то выведи в консоль ее приоритет. Используй switch.
14
Задача
Java Multithreading, 5 уровень, 5 лекция
Недоступна
Без дураков
1. Создай private class MyUncaughtExceptionHandler, который на перехват исключения должен подождать половину секунды, а затем вывести на экран secretKey, имя трэда и сообщение возникшего исключения. Используй String.format(...). Пример: super secret key, Thread-0, it's an example 2. Разберись в посл
Комментарии (91)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Victor Уровень 36
10 ноября 2025
Благодаря тому, что в Java можно объединять несколько case-меток для одного блока кода, все три состояния ожидания (WAITING, TIMED_WAITING, BLOCKED) можно обработать одинаково - вызовом interrupt() один раз: case WAITING: case TIMED_WAITING: case BLOCKED: mythread.interrupt(); break;
Antariko Уровень 8
26 апреля 2025
И снова седая ночь...
SomeBody098 Уровень 51
25 июля 2024
на этой картинке че!? Стив в шортах!?
Private Joker Уровень 36
16 июля 2024
/* Комментарий удален */
Igoreek Уровень 43
8 сентября 2024
твой коммент тоже нужно скипнуть
Dr.Alexcemen9 Уровень 51
11 сентября 2024
ну вроде это чучело уже отлетело)
Private Joker Уровень 36
24 сентября 2024
Очко твое отлетело после долгих лет долбежки в него
Dr.Alexcemen9 Уровень 51
24 сентября 2024
о конченный вернулся😆
Private Joker Уровень 36
24 сентября 2024
Поешь говна пробитый))
Long_byte Уровень 43
2 июня 2024
кто может объяснить суть класса MyUncaughtExceptionHandler мы передаем в метод текущей нити setUncaughtExceptionHandler объект UncaughtExceptionHandler этот объект является обработчиком неперехваченных исключений? в документации написано что поток таким образом может получить полный контроль как на это реагировать получается при завершении из за неперехваченных искючении вызывается метод public void uncaughtException(Thread t, Throwable e)?
Kirill Уровень 46
16 октября 2024
Да, все именно так: все исключения, которые возникли в потоке и не были перехвачены в try-catch, будут обрабатываться согласно сценария, описанного в UncaughtExceptionHandler.
Алексей Уровень 40 Expert
30 января 2024
Хороши задачи , однако)
Евгений Уровень 33
29 августа 2023
Одной из причин ошибок валидации может быть различие синтаксиса, заложенного в решении на сервере валидации и в среде ученика. (По сути как разные версии sdk) Так, задача со switch не пропускает конструкцию типа:

switch (...){
                case NEW -> thread.start();
                case WAITING -> thread.interrupt();
             ...}
и падает с ошибкой "Отсутствует объявление класса, интерфейса или enum-а"; Зато пропускает такой код:

switch (...){
                case NEW: {
                    thread.start();
                    break;
                }
                case WAITING: {
                    thread.interrupt();
                    break;
                }
               ...}
Sergio Pi Уровень 51 Expert
12 августа 2023
Метод `setDaemon(true)` используется менее часто, чем другие аспекты многопоточного программирования. Это потому, что использование демонических потоков требует осторожности и хорошего понимания того, как они взаимодействуют с другими потоками в приложении. Вот несколько причин, почему программисты могут избегать использования демонических потоков: 1. **Неопределенность завершения:** Демонический поток может быть прерван в любой момент, даже если он выполняет какую-либо задачу. Это может привести к непредсказуемому поведению и потере данных. 2. **Ресурсы и завершение:** Демонический поток завершается, когда все недемонические потоки завершаются. Если у вас есть какие-либо важные задачи, которые требуется завершить, прежде чем программа завершится, демонические потоки могут вызвать нежелательное поведение. 3. **Сложность отладки:** Проблемы с многопоточным кодом могут быть сложными для выявления и решения. Демонические потоки могут добавить еще один уровень сложности при отладке. 4. **Архитектурное решение:** В большинстве случаев, если вам нужно управлять фоновыми задачами или планировать выполнение определенных задач, более явные и контролируемые механизмы, такие как `ExecutorService` из пакета `java.util.concurrent`, могут быть предпочтительнее. 5. **Ненадежные ресурсы:** Демонический поток может работать с ресурсами, такими как файлы или сетевые подключения. В случае ненадежного завершения потока такие ресурсы могут остаться в непредсказуемом состоянии. В целом, использование демонических потоков требует внимательного планирования и оценки рисков. В большинстве сценариев более управляемые подходы, предоставляемые современными библиотеками многопоточности, могут быть более предпочтительными.
Anonymous #3059777 Уровень 51
21 марта 2023
— Привет, Амиго! Как настроение? — Отличное. Сегодня столько нового узнал. Особенно про солярий
Tomhetted Уровень 41
19 марта 2023
Вроде прикольные задачки, но условия написаны ужасно