java – 跨服务锁定文件

在同一个应用程序中,在两个“writer”服务之间共享文件的最佳方法是什么?

编辑:
对不起我猜应该给出更多细节.

我有一个将条目保存到缓冲区的服务.当缓冲区变满时,它会将所有条目写入文件(依此类推).运行的另一个服务将在某个时刻到来并读取文件(基本上是复制/压缩它),然后清空它.

最佳答案 以下是您可以做的一般概念:

public class FileManager
{
    private final FileWriter writer = new FileWriter("SomeFile.txt");
    private final object sync = new object();

    public void writeBuffer(string buffer)
    {
        synchronized(sync)
        {
            writer.write(buffer.getBytes());
        }
    }        

    public void copyAndCompress()
    {
        synchronized(sync)
        {
            // copy and/or compress
        }
    }

}

你将不得不做一些额外的工作,以使一切安全,但这只是一个基本的例子,让你了解它的外观.

点赞