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

    +145

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    @Override
      public void run() {
        while (true) {
          try {
            if (this.getTime() == this.peek().getTime()) {
              this.pop().run();
            }
            Thread.sleep(1000);
          } catch (final InterruptedException e) {
            break;
          }
        }
      }

    кто найдет говняшку, тот получит... = )

    если что, я уже исправил )))

    Запостил: Lure Of Chaos, 03 Ноября 2010

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

    • Кэпа
      Ответить
    • 8 строчка не в том месте?..
      или 5 никогда не выполнится?
      Ответить
    • 1) выходить из треда надо не посылая ему интеррапт, а черех флаг:
      while (run) //не забыть пометить run волатайлом, из другого треда менять значение.
      //И никакого break не нужно будет


      2) что такое peek и pop? Вы от стека что ли наследовались?
      Очень красиво -- Runnable и Stack.

      3) что такое getTime()? Текущее время? И что там может совпасть?

      4) Судя по косвенным признам -- в стеке лежат точно такие же классы, и метод run() в итоге раздует стек вызовов до эксепшена

      5) нафига exception финальный?

      Вообще странный код
      Ответить
      • 1. обычно я завожу для этого private volatile boolean running; но тут пока класс не закончен
        2. нет, просто методы неправильно названы, но для меня понятны. Тут не стек, а очередь.
        3. да, текущее время, в этом и Г, что вряд ли совпадет с точностью до миллисекунды
        4. в стеке обычные Runnable, которые быстро выполняют задачу без организовывания новых потоков
        5. правильно, тут не надо, но мне эклипс сам спорядкивает код, и кроме прочего делает финальными все параметры, которые далее не изменяются
        Ответить

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