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

  • 18
  • Недоступна
1. Разберись, что делает программа. 1.1. Каждая нить должна читать с консоли слова. Используй готовый static BufferedReader reader. 1.2. Используй AtomicInteger readStringCount, чтобы посчитать, сколько слов уже считано с консоли всеми нитями. 2. Реализуй логику метода run: 2.1. Пока нить не прерва
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (309)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Сергей 18 уровень, Москва
8 октября, 08:31
#1:[1, 2, 3, 4, 5, null, null, null, null, null, null, null, null] главное убрать null
Pozdnyakov Anton 18 уровень, Санкт-Петербург
6 октября, 08:37
Ещё до просмотра дополнительной информации о "syncronized", "ready()" и прочего, ещё не пройденного на данном этапе, как и многие, я столкнулся с заполнением списка null - объектами. Мне показалось простым решением ввести в цикле while дополнительную проверку введённой строки на "пустоту"(посредством сравнения с null). Возможно мой способ и деревянный, но валидатор его принял.
while(!current.isInterrupted())
{
try  {
      s = reader.readLine();
      if (s != null)
          {
          Solution.readStringCount.incrementAndGet();
          result.add(s);
           }
       }
       catch (IOException e){}
}
Dmitry Vasilyev 18 уровень, Саратов
вчера, 09:48
Не метод норм. А вот что тут деревянное по пояс - так это валидатор 😂
Alex Prosmickii 19 уровень, Минск
9 сентября, 15:37
задача, конечно, была принята, но, несмотря на проверку reader.ready() часто бывает, что один поток отрабатывает readLine() после вывода на экран результата. Кто-нибудь придумал, как этого избежать?
Иван 19 уровень, Санкт-Петербург
14 октября, 12:32
Никак, потому что это костыль. Так не пишет никто. Просто для того что бы ты вспомнил, что есть такое понятие как готовность потока. Задача правильно решается через синхронизацию. Но думаю ты это уже понял)
Юрий 23 уровень, Москва
1 сентября, 13:52
Задача хорошая, но она опережает знания студента по курсу. Без synchronized сложновато)
Феоморт 32 уровень, Калининград
29 августа, 22:50
Да ЧТО ему надо в конце концов?? Программа работает, методы правильные, сразу после считывания поставил....
Феоморт 32 уровень, Калининград
29 августа, 23:00
Офигеть, я в шоке. Помогло убрать sleep и исключение, связанное с ним...
Kozzy Rock 17 уровень, Санкт-Петербург
28 августа, 19:23
Что-то первый раз слышу про reader.ready()
Михаил Клименко 19 уровень, Краснодар
2 августа, 04:56
Отличная задача, путем 15-ти подходов к лежащим граблям было вбито получено новое знание о работе BufferedReader :)
29 июля, 01:42
кто может объяснить разницу между Thread.currentThread() и this в случае, если они вызываются из метода run()? разве текущем исполняемом потоке есть какой-то еще кроме this?
dolcom 22 уровень, Самара
6 августа, 07:47
Попробую объяснить как я это понял. Возьмём 2 примера:
SomeClass someObject = new SomeClass(); // SomeClass implements Runnable
Thread thread = new Thread(someObject);
thread.start();
для того, чтобы вывести, скажем, имя этого потока в методе run(), придётся как раз-таки воспользоваться Thread.currentThread().getName() и второй пример:
SomeClass someObject = new SomeClass(); // SomeClass extends Thread
Здесь же можно воспользоваться просто методом getName(), поскольку мы находимся внутри объекта класса Thread у которого есть как раз-таки этот метод
Валентин 19 уровень, Москва
23 июля, 08:51
ребят подскажите для чего - while (count > readStringCount.get()) { }
Mister S 20 уровень
25 июля, 04:48
Это как-бы пауза для проработки нитей. Далее главная нить программы продолжит работу только при условии, что нужное количество введенных строк уже достигнуто.
javaSerdj 35 уровень, Санкт-Петербург
22 июля, 02:31
Не понял зачем проверять на готовность ридер? Переменная у нас статичная - значит загружается раньше чем начинает отрабатывать метод мейн. Как он может быть не готов? Открыт в другом потоке?
Mister S 20 уровень
25 июля, 04:58
Мне кажется, что проблемма в том, что в момент исполнения условия количества введенных строк, другие нити уже захватили Reader и надо им ввести строки, а главная программа уже в этот момент закрывает Reader - в результате получаем ошибку.
Ice 18 уровень, Одесса
6 сентября, 14:54
да, у меня в отладке было такое, что в потоках было обращение к нити после её закрытия. Проверка на готовность помогла.