Если у меня есть log4j logger в классе, который реализует Runnable:
MyTask implements Runnable {
private static final Logger log = Logger.getLogger(MyTask.class);
...
}
Если я создаю много экземпляров этого Runnable
и отправляю их в ExecutorService
на многоядерной машине, гдеони работают параллельно, и все они записывают в статический Logger
, похоже, существует риск конфликта.Лучшая модель выглядит следующим образом:
MyTask implements Runnable {
private final Logger log;
MyTask(String name) {
log = Logger.getLogger(name);
}
...
}
Итак, мой вопрос ... этот шаблон вы использовали или нашли необходимым, поскольку на данный момент я просто выдвигаю гипотезу?
Спасибо