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

    +68

    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
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    public abstract class AbstractJob implements Job
    {
        private static ConcurrentHashMap<String, Boolean> mutexes = new ConcurrentHashMap<String, Boolean>();
    
        public abstract void job(JobExecutionContext jec, Logger logger) throws JobExecutionException;
    
        public void execute(JobExecutionContext jec) throws JobExecutionException
        {
            Logger logger = LoggerLocator.getLogger(this.getClass().getSimpleName());
            if (mutexes.containsKey(this.getClass().getSimpleName()))
            {
                logger.info("Job "+jec.getJobDetail().getName()+" already running");            
            }
            else
            {
                try
                {
                    mutexes.put(this.getClass().getSimpleName(), true);
                    job(jec, logger);
                }
                finally
                {
                    mutexes.remove(this.getClass().getSimpleName());
                }
            }
        }
    }

    Race condition и передача логгера в параметрах очень порадовали. А ведь вместо написания кривого велосипеда можно было просто @DisallowConcurrentExecution

    Запостил: konsoletyper, 12 Июля 2012

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

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

    Ошибка компиляции комментария:
    1. Гости могут высказаться только в понедельник, среду, четверг или воскресение
    ava Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:
    А не использовать ли нам bbcode?
    • [b]жирный[/b] — жирный
    • [i]курсив[/i] — курсив
    • [u]подчеркнутый[/u] — подчеркнутый
    • [s]перечеркнутый[/s] — перечеркнутый
    • [blink]мигающий[/blink] — мигающий
    • [color=red]цвет[/color] — цвет (подробнее)
    • [size=20]размер[/size] — размер (подробнее)
    • [code=<language>]some code[/code] (подробнее)
    Проверочный код