Scr*_*ers 2 java concurrency logging multithreading
如果我在实现Runnable的类中有一个log4j记录器:
MyTask implements Runnable {
private static final Logger log = Logger.getLogger(MyTask.class);
...
}
Run Code Online (Sandbox Code Playgroud)
如果我创建了许多这样的实例Runnable并将它们提交到ExecutorService多核机器并且它们并行运行,并且它们都写入静态Logger,那么这似乎存在争用的风险.一个更好的模式似乎是:
MyTask implements Runnable {
private final Logger log;
MyTask(String name) {
log = Logger.getLogger(name);
}
...
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题......这是你用过或发现必要的模式,因为我现在纯粹是假设吗?
谢谢