1. Java / Говнокод #6683

    +79

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    Object sync;
    
    try {
        synchronized (sync){
            sync.wait();
        }
    } catch (NullPointerException npe){
        sync = new Object();
        synchronized (sync){
            sync.wait();
        }
    }

    Вот так чел пытался избежать "ненужного" создания объекта-монитора. Память экономил...

    Запостил: Skipy, 17 Мая 2011

    Комментарии (14) RSS

    • Как писать надежный код

      try {
      or.setField1(ReportHelper.EMPTY_STRING);
      } catch (NullPointerException e2) {
      or.setField1(ReportHelper.EMPTY_STRING);
      }
      Ответить
    • ааа, я понял замысел: это ленивое создание обьекта!
      кстати, чел не понимает, что sync вполне может замениться на this -- объяснять пробовали?
      Ответить
      • >>вполне может замениться на this
        это вы имеете ввиду эквивалентную замену? Если да, то вы не правы, сэр.
        Ответить
        • как я понимаю, извне обьект монитора не трогается (иначе бы мы могли работать на разных мониторах), а раз монитор один, то сгодится и текущий обьект.
          О, контекст тут наверное статический - тогда да, this не будет.
          Ответить
          • > а раз монитор один, то сгодится и текущий обьект.

            На нем кто-то может сдуру вызвать notify. Не, чем глубже спрятан монитор, тем лучше. Так что -

            private final Object sync = new Object();
            Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий