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,
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (28)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
RuslanN31 уровень, Нижний Новгород
29 января, 13:43
написал проверку isValuePresent == false - Вали не принял Ему нужно !isValuePresent
Vitaly Khan35 уровень
8 января, 03:12
полезная задачка. можно поэкспериментировать с этими wait, notify...
Philip J.40 уровень, Днепр
6 сентября 2018, 20:39
Сервер и клиент запускаются одновременно в разных нитях. Сервер сразу же пытается вывести письмо на экран, но его нет, так как клиент спит 1000 мс перед отправкой. Нужно заставить сервер ждать. Через 1000 мс клиент напишет письмо и разбудит сервер, чтобы он вывел текст на экран.
Yurii Koval40 уровень
4 сентября 2018, 12:28
Если написать
while( this.isValuePresent) {...}
то валя не примет. А если написать
while(isValuePresent){...}
то все ок.
Nikita Krutov41 уровень, Москва
3 июля 2018, 07:44
несколько замудрённая задача, но если следовать требованиям, то всё работает - главное правельно обозначить условия в циклах: для get (!isValuePresent) , а для put (isValuePresent).
18 мая 2018, 04:30
Всем доброго времени суток! Кто нибудь может объяснить почему мое решение прошло проверку у валли, а результат вывода получается всего 1 строка: Put: 1 И все...? При неоднократном тестировании. И это очень настораживает...
Divertitto40 уровень
10 сентября 2018, 14:47
Скинь код
Victoria Sedletskaya35 уровень, Одесса
8 января, 20:19
наверное, вы в методе run() весь цикл заключили в synchronized , а валик просто проверяет чтоб он был
23 марта 2018, 14:11
Следим за случайными пробудками))
Vitaly Khan35 уровень
8 января, 03:08
заменил while на if в правильном решении... и не обнаружил случайных пробудок) наверно, фаза луны не та.... (источник)
Захар40 уровень
5 февраля 2018, 12:11
Идеально решил задачу, все проверил двадцать пять раз, вывод отличный. Компилятор без объяснений выдал Time Out(мое любимое).
Михаил Голубцов41 уровень, Санкт-Петербург
15 февраля 2018, 20:27
Ога, я не понимаю почему Time OUT то!! Я даже из обоих run() весь код убрал, все равно Time OUT!
Oleg Solovichenko29 уровень, Екатеринбург
25 августа 2018, 11:15
Нагуглил решение, там чуть по другому не как у меня в части transferObject и сразу перестал ругаться на таймаут
Михаил35 уровень, Санкт-Петербург
13 января 2018, 20:40
Хорошо когда требования к задаче четкие!) В реальности такого конечно не будет, стоит так полагать!
Anonymous #87415730 уровень
14 декабря 2017, 17:15
Бред. Синхронизированный доступ к своим методам должен обеспечивать класс TransferObject. Это должно быть что-то вроде BlockingQueue, как здесь http://jdevnotes.blogspot.ru/2014/03/blockingqueue-java.html
Александр31 уровень, Москва
21 апреля 2018, 22:49
Я так полагаю, что на примере этой задачи, нам как раз и показывают, как работает эта самая BlockingQueue. Но Вы наверное программист с огромным стажем и не менее огромными яйцами, Вам конечно виднее, что бред, а что нет.