Кто первый встал - того и тапки

  • 18
  • Недоступна
1. Разберись, что делает программа. 1.1. Каждая нить должна читать с консоли слова. Используй готовый static BufferedReader reader. 1.2. Используй AtomicInteger readStringCount, чтобы посчитать, сколько слов уже считано с консоли всеми нитями. 2. Реализуй логику метода run:
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (382)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Barm
Уровень 34, Минск
15 января, 21:21
Раз ты добрался до сюда, то скорее всего уже нашёл решение здесь Но существует, как часто бывает, ряд решений для одного вопроса. Мои изыскания показали, что вариант решения посредством использования synchronized (this) не работает по той причине, что он блокирует блок метода объекта consoleReader(1,2 или 3). А в него другие нити и не стремятся, т.к. у каждой из них свой объект и свой синхронизированный блок. Другое дело, что BufferedReader синхронизирован как положено и нити зависают в ожидании своей очереди к консоли. Т.е. если использовать в качестве лока synchronized какой-нибудь единственный объект например ReaderThread.class и внутрь защищённого блока поставить проверку isInterrupded, то логика начинает отрабатывать корректно.
Сергей Коваленко
Уровень 32, Краснодар
2 января, 19:43
смотрю что все, как и я, в основном озадачились тем, что нити продолжают ожидать ввода после интеррапта. в остальном задача простая. НО после долгих раздумий и все-таки решения задачи посмотрел правильное решение, а там вообще не парятся по этому поводу, после вывода, программа продолжает ждать ввода 😏
Никита
Уровень 28, Минск, Belarus
21 декабря 2021, 07:31
в самом популярном комменте есть ссылка на разъяснение. НО! мы не проходили synchronized. а задача решается и без synchronized. достаточно выполнить проверку ридера на ready.
БелК в труселях
Уровень 32, Покровск, Ukraine
25 ноября 2021, 07:48
Решил сам с рекордом 21 попытка!! Ура. Такие задачи надо решать только утром на свежую голову!
Михаил Кладовщик с кучей времени
19 ноября 2021, 11:58
Как можно ввести null с консоли?
Дмитрий
Уровень 35, Москва
7 ноября 2021, 21:25
Впервые встречаю задачу, в которой правильное решение работает некорректно. Спасибо комментаторам.
Sergey Kornilov
Уровень 37, Petropavlovsk, Казахстан
4 ноября 2021, 11:55
Всего эту задачу решили 25135 учеников. Нажмите на Популярные комментарии, в самом популярном ссылка. Там всё досконально объяснено !
Валерий Backend Developer в Mriya Resort&Spa
2 ноября 2021, 17:11
Жаль в комментах нет разработчиков условий валидатора для каждого задания) Толпа бы их сожгла ) Еду в автобусе, решаю задачу с телефона. Мало свободного времени на изучение. Пишу код, логикой понимаю что все четко. Запускаю и валидатор посылает) Говорит, что инкремента нет) смотрю на свой код и понимаю, что эта строчка есть Говорит что данные не выводятся, смотрю на код и понимаю, что эта строчка есть Говорит, что данные не добавляются, смотрю и вижу, что строчка есть! ) Приезжаю домой, запускаю программу с компа, все работает! А этот валидатор не пропускает....) Понимаю, что не хочу готовое решение брать и лезу в комментарии и вижу какую-то хрень, с которой все сталкиваются)
Serg
Уровень 36, Санкт-Петербург
24 сентября 2021, 18:50
Очень классная задача) Особо понравилось проверять на своем компе, когда неправильно обработан ввод и ресурсы вылетают в трубу, а комп офигивает от нехватки памяти)
Serg
Уровень 36, Санкт-Петербург
24 сентября 2021, 18:53
Если мы в обработке ввода не используем if (reader.ready()) то может возникнуть ситуация, когда одна нить считала строку, а две другие нити зависли, так как поток занят.
SomeBoy
Уровень 30, Москва, Russian Federation
17 декабря 2021, 14:23
сделал через reader.ready() - пропустило. Но вывод в консоль такой же. Какая-то нить читает, какая-то нет. Практический смысл этого условия всё равно не ясен.
Виноградина
Уровень 48, Berkeley, United States
10 сентября 2021, 21:25
И еще интересный вопрос почему бы на сайте комментарии с большим количеством лайков не поднимались бы наверх! было бы гораздо удобнее. Дельные комменты наверху, фигня внизу
Радомир
Уровень 35, Волжск, Russian Federation
2 ноября 2021, 16:10
Это реализовано же, сверху есть выбор - популярные, новые, старые