Producer–consumer

  • 14
  • Недоступна
В классе TransferObject расставь вызовы методов wait/notify/notifyAll, чтобы обеспечить последовательное создание и получение объекта. В методах run классов ConsumerTask и ProducerTask создай необходимые synchronized блоки. Ожидаемый вывод: ... Put: M Got: M Put: N Got: N Put: K Got: K ... где M, N,
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (24)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Philip J.40 уровень, Днепр
6 сентября, 20:39
Сервер и клиент запускаются одновременно в разных нитях. Сервер сразу же пытается вывести письмо на экран, но его нет, так как клиент спит 1000 мс перед отправкой. Нужно заставить сервер ждать. Через 1000 мс клиент напишет письмо и разбудит сервер, чтобы он вывел текст на экран.
Yurii Koval31 уровень
4 сентября, 12:28
Если написать
while( this.isValuePresent) {...}
то валя не примет. А если написать
while(isValuePresent){...}
то все ок.
Nikita Krutov41 уровень
3 июля, 07:44
несколько замудрённая задача, но если следовать требованиям, то всё работает - главное правельно обозначить условия в циклах: для get (!isValuePresent) , а для put (isValuePresent).
18 мая, 04:30
Всем доброго времени суток! Кто нибудь может объяснить почему мое решение прошло проверку у валли, а результат вывода получается всего 1 строка: Put: 1 И все...? При неоднократном тестировании. И это очень настораживает...
Divertitto40 уровень
10 сентября, 14:47
Скинь код
23 марта, 14:11
Следим за случайными пробудками))
Захар40 уровень
5 февраля, 12:11
Идеально решил задачу, все проверил двадцать пять раз, вывод отличный. Компилятор без объяснений выдал Time Out(мое любимое).
Михаил Голубцов39 уровень, Санкт-Петербург
15 февраля, 20:27
Ога, я не понимаю почему Time OUT то!! Я даже из обоих run() весь код убрал, все равно Time OUT!
Oleg Solovichenko29 уровень, Екатеринбург
25 августа, 11:15
Нагуглил решение, там чуть по другому не как у меня в части transferObject и сразу перестал ругаться на таймаут
Михаил35 уровень, Санкт-Петербург
13 января, 20:40
Хорошо когда требования к задаче четкие!) В реальности такого конечно не будет, стоит так полагать!
Anonymous #87415730 уровень
14 декабря 2017, 17:15
Бред. Синхронизированный доступ к своим методам должен обеспечивать класс TransferObject. Это должно быть что-то вроде BlockingQueue, как здесь http://jdevnotes.blogspot.ru/2014/03/blockingqueue-java.html
Александр31 уровень, Москва
21 апреля, 22:49
Я так полагаю, что на примере этой задачи, нам как раз и показывают, как работает эта самая BlockingQueue. Но Вы наверное программист с огромным стажем и не менее огромными яйцами, Вам конечно виднее, что бред, а что нет.
18 октября 2017, 17:33
Пишут Всегда старайся использовать concurrent коллекции вместо ручной реализации wait/notify/notifyAll. Задачи подобные этой позволяют лучше понять основы работы многопоточных приложений. А требуют другое....
Kroll36 уровень, Владивосток
20 сентября 2017, 20:19
Псц, валидатор удавить. while(this.isValuePresent) ему не нравится, ему подавай обязательно без this.