gpt4 book ai didi

java - 如何组织信号量以将多个 java 进程写入一个文本文件

转载 作者:行者123 更新时间:2023-12-02 00:03:58 25 4
gpt4 key购买 nike

我们有几个 Java 进程时不时地写入一个文本文件。这些不是同一虚拟机的线程,而是从命令行运行的单独 java.exe 进程。这些进程写入同一日志文件。我们使用了canWrite...

while (!Log.canWrite()) {
System.out.println("File: " + LogPath + " is locked, waiting...");
Thread.sleep(2000);
}

...但似乎不起作用。我们收到以下错误:

The process cannot access the file because it is being used by another process) at java.io.FileOutputStream.openAppend(Native Method).

问题:

在此类问题中组织信号量的最佳实践是什么?如果解决方案不会太消耗资源,从而极大地影响总体性能,那就太好了。

最佳答案

您可以使用 FileChannel.lock() 同步对文件的访问。您可以从FileOutputStream获取FileChannel .

编辑但就你而言,它将解决一个扭曲问题。您需要的是一个集中式日志服务器。有关更多详细信息,请参阅此问题:Centralised Java Logging

关于java - 如何组织信号量以将多个 java 进程写入一个文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14262051/

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