gpt4 book ai didi

Java并发日志记录到文件

转载 作者:行者123 更新时间:2023-11-30 03:44:03 24 4
gpt4 key购买 nike

我目前正在编写一个记录器(例如使用java记录器),用它我可以将 Activity (信息、错误)记录到文件中。这个(静态)记录器类由多个线程和进程使用。

如果我只有一个日志文件,那么线程就会被阻塞,这是对的吗?那么只有一个线程可以写入该文件?

另一种解决方案是为每个线程提供一个自己的日志文件,但这会有点困惑。

因此,我考虑首先将日志保存在流中(也许每个线程一个),并且仅在程序结束时将所有内容写入文件。

这是最好的方法吗?我怎样才能实现这个目标?

最佳答案

您可以尝试在程序末尾将所有内容写入文件,但这可能会使用大量内存,并且通常需要实现记录器,以便它们仍然会记录大部分/全部数据,以防万一程序崩溃或其他意外终止。

作为替代方案,您可以使用并发队列来记录消息,例如一个LinkedBlockingQueueConcurrentLinkedQueue ,其中多个线程将消息写入队列,单个线程从队列读取消息并将消息写入文件。使用 BlockingQueue,日志记录线程可以在队列上调用 takepoll(timeout, TimeUnit),使线程 hibernate ,直到消息变为可用的;使用ConcurrentLinkedQueue,您可以让日志记录线程 hibernate 十秒钟,然后醒来,将队列刷新到文件,然后再 hibernate 十秒钟。在任何一种情况下,生成记录消息的线程都不会阻塞。

关于Java并发日志记录到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26192322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com