Мудрый человек думает раз, прежде чем два раза сказать

  • 8
  • Недоступна
Все методы, кроме метода main, класса Solution должны быть thread safe. Сделайте так, чтобы оба метода могли выполняться одновременно двумя различными тредами. synchronized(this) для этого не подходит, используй другой объект для лока.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (77)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Уася31 уровень, Замусральск
26 августа, 20:47
Принимает решение вида new Object() в 1 методе и new Integer(2) во 2 методе.
Aleksei30 уровень
25 августа, 14:57
Принимает даже, если новые объекты создавать внутри методов. Есть правда сомнения, что так делать можно.
Jean Valjean38 уровень
19 июля, 19:14
А без создания объектов слабо? Забыли прошлые задачи? synchronized (Solution.class) synchronized (this.getClass())
Andrey35 уровень, Москва
20 июня, 14:38
Не делайте через ReentrantLock. Не будьте как я.😐
Applejack41 уровень, Минск
3 июня, 15:18
Нет, ну, я бы понял, если бы в методах менялись поля, но чтоб так...
Alexey Prilessky34 уровень, Минск
24 мая, 10:09
synchronized (Integer.valueOf (var1) )
Александр32 уровень, Санкт-Петербург
17 мая, 09:19
А почему, если сделать synchronized (new Object()) { чего-то там внутри } , то валидатор не принимает? Ведь в каждом же случае объекты разные? Расскажите кто-нибудь.
Leonid41 уровень, Киев
17 мая, 09:39
Вот именно - в каждом случае объекты разные - то есть это вообще отсуствие синхронизации.
Александр32 уровень, Санкт-Петербург
17 мая, 10:29
Согласен, спасибо.
Владимир Шмаков41 уровень, Москва
30 апреля, 13:46
Интересная тема, не сталкивался с таким. Если честно, посмотрев названия многих задач иногда складывается впечатление что названия к ним придумывала какая-то ТП из вконтакта))
Алексей39 уровень, Санкт-Петербург
29 апреля, 18:29
Можно объявить в классе Solution два объекта Object o1, o2, затем в одном методе синхронизироваться по o1, а в другом - по o2.
RFedorenkov41 уровень, Москва
5 мая, 16:01
не догадался до этого. Сделал синхронизацию по this и по классу, валидатор схавал
Евгений41 уровень, Нижний Новгород
20 апреля, 17:45
А я вот попробовал синхронизцию по Thread.currentThread() но не приняло. А вообще по логике должно же работать? Этот метод, я так понимаю, возвращает саму нить. Нить лочится сама по себе, выполняет код, а потом разлочится. Другие нити не смогут войти в блок... Или смогут, получается? Потому что для второй нити синхронизация будет идти уже по ней самой, а не по первой?
Leonid41 уровень, Киев
17 мая, 09:41
Сам спросил, сам ответил)