gpt4 book ai didi

Java并发从多个线程写入单个文本文件?

转载 作者:行者123 更新时间:2023-11-29 07:40:39 25 4
gpt4 key购买 nike

我有一个多线程 Java 7 程序(一个 jar 文件),它使用 JDBC 来执行工作(它使用固定线程池)。

该程序运行良好,它会记录从多个并发线程到命令 shell 控制台窗口 (System.out.printf()) 的过程。

除了控制台输出之外,我还需要为该程序添加从多个线程写入单个纯 ASCII 文本日志文件的能力。

输出量小,文件相对较小,因为它是日志文件,不是数据文件。

您能否建议一个好的且相对简单的设计/方法来使用 Java 7 功能完成此操作(我还没有 Java 8)?

任何代码示例也将不胜感激。

非常感谢

编辑:

我忘了补充:根据官方 Java 文档,在 Java 7 中使用 Files.newOutputStream() 静态工厂方法被声明为线程安全的。这是从多个线程写入单个共享文本日志文件的最简单选项吗?

最佳答案

如果你想记录输出,为什么不使用日志库,比如log4j2 ?这将允许您根据您的特定需求定制您的日志,并且可以在不同步 stdout 上的线程的情况下进行记录(您知道运行 System.out.print 涉及锁定 System.out 吗?)

编辑:对于后者,如果您记录的内容是线程安全的,并且您可以添加 LMAX' disruptor.jar在您的构建中,您可以配置异步记录器(只需添加“异步”),它将有一个记录线程来处理整个消息的格式和写入(并保持您的日志消息的顺序),同时允许您的线程顺利运行.

关于Java并发从多个线程写入单个文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30612204/

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