В отдельном файле создай класс MyThread унаследовавшись от Thread. MyThread должен:
1. Иметь возможность быть созданным используя любой конструктор супер-класса (Alt+Insert).
2. Приоритет у трэдов должен проставляться циклично от минимального значения до максимального значения.
3. если у трэда устан
Приоритеты в Threads
- 16
Недоступна
Комментарии (124)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
CyberBoar
3 августа, 14:55
Для какой цели нужен пункт 3?
Если у тред группы установлен максимальный приоритет, как бы мы не хотели, мы и так не можем установить приоритет треда в такой тред группе выше, чем установленный лимит.
0
Romanya Java Developer в Региональный Информа
24 июля, 06:31
Для понимания сути:
1) Установить приоритет потоку можно в конструкторе (или блоке инициализации) setPriority(int i);
2) в классе MyThread нужно поле счетчик общее для всех объектов.
3) если для ThreadGroup приоритет ограничен цифрой 7 при попытке задать приоритет потоку из группы цифрой 8 ему задастся приоритет цифрой 7.
+1
The Body of the Atr
29 апреля, 10:17
Валя не скомпилировала один конструктор, вставленный через Alt+Insert, пришлось удалить его, тогда прокатило.
Всего эту задачу решили 6920 учеников.
0
Aleksey
1 февраля, 11:31
Все очень просто - НЕстатический блок инициализации, в котором при достижении MAX_PRIORITY сбрасываем счётчик до MIN_PRIORITY. Никаких дополнительных проверок не требуется.
0
Igor Petrashevsky
7 июля, 00:13
требуется, для групп.
0
Александр
28 декабря 2021, 14:11
Не получалось решить, пробовал и в каждом конструкторе копипастить и в нестатический блок инициализации выносить. Все равно вывод был неправильный. В итоге подглядел один вариант, который по смыслу был как мой, но в нем не было проверки на то, больше ли значение priority в Thread, чем в его группе. Просто
И этого оказалось достаточно. Валик принял. 0
Igor Petrashevsky
7 июля, 00:14
я через % делал, но в правильном решении превышение приоритета , значит 1.
0
Valerii
16 ноября 2021, 08:44
Возможно я один не понял условия, но оставлю это здесь для таких же.
😎Значение приоритета должно увеличиваться каждый раз, оно не зависит от того есть у потока ThreadGroup или его нет.
😎Если вы выставляете потоку приоритет ThreadGroup, то не забудьте увеличить общий приоритет(ваш счетчик)
0
Nik Grape
12 октября 2021, 01:33
вот такого конструктора у вали нет, у кого 16 джава будьте осторожнее, он последним должен быть
И на счет максимального приоритета по группе не парьтесь он и так не может его превысить и просто понизиться до приоритета группы +9
Сонмониус
19 июля, 14:29
Спасибо, помогло
0
Dmitry Technical Lead
21 сентября 2021, 05:29
Валидатор не понимает аннотации @NotNull, @Nullable, которые вставляет в конструкторы IDEA при Alt+Ins.
+1
LuneFox инженер по сопровождению в BIFIT Expert
27 октября 2021, 02:21
В проекте аннотации можно отключить вроде как.
0
Максим Дудин
8 сентября 2021, 08:50
Что интересно готовое решение сложней чем моё, с проверкой на "если приоритет выше приоритета группы, то он равен приоритету группы, а если нет, то новому"
А я не проверял, и работает как-то само... и проверку прошёл сразу...
1. сначала добавил все конструкторы какие предложил alt+insert
2. затем организовал статический AtomicInteger newPriority равный минимальному приоритету, сначала сделал 1, но испугавшись валидатора (может и зря, всё и так работало) переправил на Thread.MIN_PRIORITY
3. затем организовал public void метод который
- устанавливает приоритет с помощью setPriority через newPriority.get()
- увеличивает newPriority на 1
- проверяет на "если больше MAX_PRIORITY", то присваиваем MIN_PRIORITY с помощью
public boolean compareAndSet (ожидаемое int, обновление int)
4. добавил вызов метода во все конструкторы (не глядя)
И оно работает.... (специально продебажил для посмотреть как) когда в случае группы значение приоритета в "методе" становиться больше 7, в группе оно не меняется т.е получается автоматически не может быть выше максимально установленного порога. Потом когда метод отработал и скинул до минимума, опять начинает его присваивать до установленного значения максимума.
+3
Marina Orlova
1 декабря 2021, 13:05
Прочла несколько раз все популярные комментарии, но только после вашего все как-то уложилось - возможно, накопительный эффект )
Все сделала аналогично, только пункт 3 не выносила в отдельный метод, поместила этот функционал в динамический блок инициализации (чтобы не дублировать код во всех конструкторах).
0
Максим Дудин
1 декабря 2021, 16:31
очень рад..🙂
0
hidden #2595317
1 декабря 2021, 19:15
Спасибо, друг!
Использовал подсказку Марины, и в ифе просто присвоил минимальное значение при равенстве максимальному.
И у меня компилятор не принял атомика, заменил на статический инт.
Все работает.
Надо заметить, что последний конструктор 16 версии баба Валя не принимает.
0
Максим Глотов
5 сентября 2021, 08:41
всего 8 конструкторов, 9й удаляйте.
+2