【发布时间】:2018-07-28 23:29:23
【问题描述】:
我想设计一个日志框架,一个强调性能的简单框架。
现在,如果一个应用程序有多个线程(比如一次有 1000 个线程),并且如果我们这样编写代码:
MyLogger logger; // Assuming singleton logger for the entire application
当一个线程想登录文件时,可能有多个线程也想登录,所以我想到了这个同步:
synchronized(logger) {
// thread does the logging into file
}
但这种方法效率不高,因为它强制执行顺序访问。
我读到了java.util.concurrent.*,我希望这能有所帮助,我看到我们有锁概念lock.tryLock(),但即便如此这也无济于事。
有没有其他方法可以让多个线程写入日志文件而不影响彼此写入文件的数据?
【问题讨论】:
-
您可能想考虑不编写自己的,而只是使用现有的日志框架之一。如果您决定自己编写,那么也许您应该看看其他开源日志框架如何解决这个问题。无论如何,虽然这是一个有趣的问题,但这可能太宽泛了。
-
@MarkRotteveel:感谢您的回复,但是框架(如 log4J)如何表现得非常好?我正在寻找这些点的输入。有什么可以分享的吗?
-
Log4j 是开源的,如果你想知道,你需要研究它们的源代码。
标签: java multithreading java.util.concurrent