Продвижение на политических дебатах

  • 9
  • Недоступна
Наш кандидат — Иванов! И мы ему немного поможем, сделав так, чтобы он толкнул речь, а затем снова речь, и ещё раз — речь на политических дебатах. Подсобим ему немного, сделав так, чтобы он разговаривал до тех пор, пока не завершится всё свободное время. Нити нам в помощь!
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (192)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Данил
Уровень 18, Уфа, Россия
26 августа, 07:35
забежал вперед и сделал так: после цикла while sidorov.stop(); petrov.stop(); ivanov.join(); задача прошла валидацию😮 В Java существуют (существовали) средства для принудительного завершения потока. В частности метод Thread.stop() завершает поток незамедлительно после своего выполнения. Однако этот метод, а также Thread.suspend(), приостанавливающий поток, и Thread.resume(), продолжающий выполнение потока, были объявлены устаревшими и их использование отныне крайне нежелательно. Дело в том что поток может быть «убит» во время выполнения операции, обрыв которой на полуслове оставит некоторый объект в неправильном состоянии, что приведет к появлению трудноотлавливаемой и случайным образом возникающей ошибке.
Serg
Уровень 32, Санкт-Петербург
15 сентября, 15:39
Зачем так сложно? Достаточно у ivanov вызвать join();
Андрей Захаренков
Уровень 20, Санкт-Петербург
19 июля, 15:48
в лекциях не совсем ясно рассказали про метод join() формулировка "Этот метод приостановит выполнение текущего потока до тех пор, пока другой поток не закончит свое выполнение." меня лично сбила с толку. вернее будет сказать, что "этот метод в первую очередь выполняет заданный поток, и уже после все остальные" эта задача и помогла осознать это: по сути нам просто нужно сделать так, чтобы с выполнения потока Иванова программа не перескакивала на потоки других спикеров, т.е. выполнить его первым в принудительном порядке для этого нам и дан метод join() — позволяет запустить и выполнить нужный поток в первую очередь оборачиваем это в try - catch и задача решена!
Seroygin
Уровень 24, Тернополь, Украина
14 августа, 14:19
В этой задаче метод join() запускается до того как запущены другие потоки, поэтому основная программа ждёт окончания запущенного потока, а потом исполняет другие, но если их все сначала запустить, а потом вызвать метод join(), то "Этот метод приостановит выполнение текущего потока до тех пор, пока другой поток не закончит свое выполнение".
Алексей С
Уровень 22, Россия
13 июля, 22:13
Хаха. Это все? Просто вызвать join. XD По моему задача на изи а не на медиум.
David Matthews
Уровень 22
8 июня, 03:59
Похоже, в валидаторе баг. Если добавить строку ivanov.join() после создания всех трёх политиков, то в результате каждый из них скажет речь по 200 раз. Но валидатор при этом засчитает решение за верное.
Галкин Юрий
Уровень 25, Москва
17 июля, 12:33
у меня не засчитал в этом случае.
Василий
Уровень 18, Украина
13 мая, 08:36
решил с добавлением только одной строки:
ivanov.join();
Но терзают сомнения, что я обманул валидатор, а не решил правильно задачу. Подскажите, пожалуйста, кто как решал. З.Ы. можно в личку ) ___ увидел решение в следующей задаче. Кто может объяснить, почему метод join() нужно ставить сразу после создания объекта. А не в другом месте? Мы же создали объект, но не какие методы с ним не запускали. Почему тогда так происходит?
Сергей Никитин
Уровень 37, Пермь, Россия
14 мая, 15:23
Потому что thread стартует в конструкторе, если ставим ivanov.join() сразу после инициализации Иванова, Иванов забирает на себя все время.
Василий
Уровень 18, Украина
14 мая, 15:30
спасибо. Может быть есть ссылка на статью которая доступно объясняет этот момент?
Сергей Никитин
Уровень 37, Пермь, Россия
14 мая, 15:47
я 4 лекцией пользовался, просто нужно понять что за чем идет. Инициализируется Иванов и запускается thread( в методе run() прописано условие, действует пока (utteranceCount < totalSpeechCount * utterancesPerSpeech)). В это время метод main останавливается и ждет пока завершится нить Иванов(мы прописали ivanov.join() сразу после инициализации ). Когда нить Иванов завершается метод main инициализирует остальные объекты, и переходит на цикл (в котором условие не выполняется ), далее выводит на консоль результат.
Андрей
Уровень 18, Самара
9 мая, 06:29
Перед этой задачей нужно решить задание "Справедливость" из этой группы.
Gromozeka
Уровень 15, Санкт-Петербург, Россия
14 апреля, 15:25
Выборы в России: Иванов сказал речь 200 раз Петров сказал речь 0 раз Сидоров сказал речь 0 раз А победил Путкин!
LokiLaufeyson
Уровень 41, Киев
4 апреля, 19:11
1) Нельзя запускать метод старт() из конструктора 2) Вместо волатил-переменной должна быть использована переменная типа АтомикИнтеджер
Anonymous #2546116
Уровень 35, Москва
23 марта, 14:52
http://tutorials.jenkov.com/java-concurrency/volatile.html
Sergey
Уровень 20, Нижний Новгород, Россия
9 марта, 07:42
Пробовал ставить join в конструкторе с проверкой, если name равен "Иванов", то join(), все отработало по условию, но валидатор не принял)