Экономим время

  • 16
  • Недоступна
1. Создай Producer и Consumer (См. комментарий к методу main). 2. Создай методы toString, equals и hashCode в классе ShareItem. Для этого в IntelliJ IDEA в теле класса ShareItem выполни: 2.1. Alt+Enter -> toString() -> Enter. 2.2. Alt+Enter -> equals() and hashCode() -> click all 'Next'-s. 2.3. Реал
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (50)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Даниил34 уровень
27 июня, 16:04
С первого раза, хоть с выводом не совпадало (в начале успевало взять на один елемент меньше, но дальше логика сохранялась).
Володимир Штаба32 уровень, Киев
12 июня, 22:25
4 попытки из-за сраных пробелов и забыл про методы в классе ShareItem которые очень легко делает сама IDE
Антон31 уровень, Нижний Новгород
26 апреля, 10:28
Со второй попытки, т.к. Валя не захотел принять String name = String.format("ShareItem-%d", i); System.out.format("Элемент '%s' добавлен\n", i); Вместо этого пришлось писать System.out.format("Элемент 'ShareItem-%d' добавлен\n", i); хотя переменную name далее использую для передачи в конструктор при создании очередного SharedItem
Constantine34 уровень, Москва
16 апреля, 11:20
2.3. Реализацию методов toString(), equals() и hashCode() оставь такими, какими их сгенерировала IntelliJ IDEA. Пришлось переписывать toString.
Алексей36 уровень
2 апреля, 11:48
WARNING!!! System.out.printf() это не System.out.format()... Я не единственный кто попался, на это, так что, оставлю это тут... Да, и System.out.format("Элемент '%s' добавлен%n", shareItem.getDescription()) - это не то что надо. ShareItem-%d - вот нужный зверь!
Пётр41 уровень, Москва
23 апреля, 06:46
скушало и так:
System.out.format("Элемент 'ShareItem-"+ i+" добавлен\n");
даже без второго апострофа после i
S3R3N1TY37 уровень, Санкт-Петербург
29 марта, 22:38
Не знаю, решил с первой, прервал потоки и вышел в catch через return; Понравится System.out.format. Условие в задаче написано немного невпопад, чтобы вывод соответствовал нужно самому правильно расположить, например Sleep и вывод System.out.format("Consumer в ожидании!%n") у меня осуществляется в цикле, после каждого нового добавления в очередь.
Пётр41 уровень, Москва
23 апреля, 06:49
Интеррапт и так выкинет в run Interrupted exception, его не надо специально отлавливать и делать ретурны, просто interrupted зависимые блоки обернуть в try-catch
try {
            Thread.sleep(450);
            while(true) {
                queue.take();
                System.out.format("Processing item.toString()\n");}

            } catch (InterruptedException e){
                //e.printStackTrace();
            }
Vitaly Khan37 уровень
26 марта, 12:13
а меня в ступор ввело условие Перед каждым добавлением выведи фразу "Элемент 'ShareItem-N' добавлен". ведь факт, что элемент добавлен, наступает только после окончания работы метода offer()! offer() на то и придуман, что добавление может не произойти и никакого exception не выбросится.
Алексей41 уровень, Москва
7 февраля, 06:51
Валидатор слишком придирчив к формату вывода информации. Даже если использован System.out.format, даже если результат такой же как в output.txt.
Gogogo41 уровень
5 февраля, 09:04
Никак не мог заставить Produser прерваться. Отправил прямо так, думал таймаут поймаю. Приняло!
Vitaly Khan37 уровень
26 марта, 12:09
скорее всего, потому что при обработке InterruptedException ничего не делали. а надо вручную делать выход из метода.
Пётр41 уровень, Москва
23 апреля, 06:56
Зачем вручную выход из метода? Исключение само не остановит трэд? Цикл или метод словил исключение, прыгнул в catch блок, вывел стэктрейс (вывод которого мы в этой задаче заглушили), и всё, бесконечный цикл (while (true))прервалcя, run отработал до конца и завершился.
Serj41 уровень, Киев
22 ноября 2018, 21:17
Приняло неправильное решение: сделал слип в бесконечном цикле Consumer и так и сдал. Потом уже понял, для чего нужен метод take()