Клубок

  • 18
  • Недоступна
1. Создай 5 различных своих нитей c отличным от Thread типом: 1.1. Нить 1 должна бесконечно выполняться; 1.2. Нить 2 должна выводить "InterruptedException" при возникновении исключения InterruptedException; 1.3. Нить 3 должна каждые полсекунды выводить "Ура"; 1.4. Нить 4 должна реализовать интерфейс
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (466)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Георгий 18 уровень, Челябинск
пятница, 21:17
У всех проблемы с четвертой нитью, у меня не выходила третья. Просто потому что сначала выводим, потом спим)
Alexey Sadetsky 18 уровень, Москва
26 ноября, 19:00
Так и не понял, почему 4 нить не принимается через Thread.CurrentThread().Interrupt() и проверку !Interrupted(). Пришлось делать через boolean переменную.
Sergii-K 19 уровень, Ljubljana
19 ноября, 16:27
А: Гиви, ты помидоры любишь? В: Кушать да, а так - нет. Оказывается "при вызове метода showWarning нить должна останавливаться;" не значит, что его нужно вызывать, но если бы он вызвался, то тогда дааа... https://www.youtube.com/watch?v=KwkOygDJrOI
Andrey Gordeev 18 уровень, Минск
14 ноября, 19:17
4-я нить Thread.currentThread().interrupted(); - валидатор не принял, а вот через булевую переменную прошло..
Артем Админ целого королевства Master
16 ноября, 11:01
метод interrupted() является статичным у класса Thread. после вызова метода значение поля interrupted сбрасывается на false для всех нитей. так как 4-ая нить наследник Thread, то каждая нить это будет отдельный объект. и проверять можно так:
while (!isInterrupted()) {
}
Артем Админ целого королевства Master
19 ноября, 11:48
да, согласен. ошибся)
aleksdenni 22 уровень, Полтава
2 ноября, 15:28
Странная задача ) Сон обязательно после вывода , иначе не работает. Изначально сделал абстрактный класс для 4 нити в отдельном файле , а в статическом блоке создал "анонимные классы".Не прошло по четвёртой нити ( хотя всё работало ). Тогда удалил анонимный класс четвёртой нити и поменял абстрактный класс , на полноценный (с реализацией методов). Добавил в лист threads.add(new MyThreadWithMessage()); , только тогда прошло. И все классы наследовал от Thread. Хотя что имеется ввиду под -"отличным от Thread типом"- так и не понял. Так как в лист нужно добавлять, с типом List<Thread> 😸 .
Druha 24 уровень
5 ноября, 18:56
"отличным от Thread типом"- Тоже не понял А вообще помучился с этой задачей
Антон Королев 19 уровень, Ярославль
2 ноября, 10:17
Да что не так с этой четвертой нитью? Нормально же работает, если просто реализовать два интерфейса Runnable и Message
if (threads.get(3) instanceof Message)
    ((Message) threads.get(3)).showWarning();
но валидатор говорит "Нить 4 из списка threads должна реализовать интерфейс Message."
Е К 18 уровень, Краснодар
31 октября, 15:53
12 попыток, 10 из которых на 4ю нить... Может кому будет полезно - кто также как я встрял с 41 нитью. все классы сделал Runnable(по условиям задачи вроде так надо) и инициализировал threads в статике так threads.add(new Thread(new Thr1())); threads.add(new Thread(new Thr2())); threads.add(new Thread(new Thr3())); threads.add(new Thread(new Thr4())); threads.add(new Thread(new Thr5())); Прошло в итоге когда поменял две вещи - унаследовал 4ю нить от Thread - в статике поменял на threads.add(new Thr4()); Одна из задач с хреновыми условиями - убила фраза "Создай 5 различных своих нитей c отличным от Thread типом" :/
ProgX 18 уровень, Саратов
30 октября, 12:10
C четвертной нитью пришлось конкретно помучиться. Я так понимаю к внутренним методам класс можно достучаться только из extends Thread, из под интерфейса увидеть метод showWarning не получилось. Вот такой строчкой я проверял как работает прерывание в методе. Мы достаем сам объект из коллекции и расширяем его до четвертной нити. После этого можно вызвать метод showWarning() для проверки.
threads.get(3).start();
        ((Thread4)threads.get(3)).showWarning();
Виталий 24 уровень, Санкт-Петербург
29 октября, 10:01
В процессе решения задачи узнал, что такое "анонимные классы" и как их использовать (получилось применить их во все потоки, кроме 4-го)
aleksdenni 22 уровень, Полтава
1 ноября, 23:18
Я для четвертого создал абстрактный клас унаследованный от Thread и имплеменрующий интерфейс. Пока не проверял валиком . Что бы проверить showWarning() , пришлось приводить к типу класса ((имяКласса)threads.get(4-1)).showWarning(); Что не удивительно, так как созданные потоки, при добавлении в threads расширяются до типа <Thread>.
aleksdenni 22 уровень, Полтава
2 ноября, 15:41
Проверил , не прошло. Четверку из статического блока, пришлось удалить .Всё реализовал в отдельном классе. В лист добавил через threads.add(new MyThreadWithMessage()); , остальные threads.add(thread1);. Только так, принял.
VioletJam 20 уровень, Красноярск
28 октября, 18:53
Збс, 4я нить обязательно должна наследоваться от Thread, реализацию одновременно Runnable и Message валидатор принимать не хочет