java - 跨服务锁定文件

标签 java android multithreading concurrency

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

编辑: 抱歉,我想我应该提供更多详细信息。

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

最佳答案

以下是您可以做什么的大致思路:

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
        }
    }

}

您将需要做一些额外的工作才能使其全部安全运行,但这只是一个基本示例,可让您了解它的外观。

关于java - 跨服务锁定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3205636/

相关文章:

java - 当 value 是 ArrayList 时,将键值插入 HashTable

java - 在 kotlin 中流式传输时收集条件项

android - xamarin android MVVMCross click按钮分配textview

java - 同时播放多个剪辑android studio - 使用线程?

c# - 我可以编写一个 C# 方法来终止调用它的任何人的执行(在同一类中)吗?

java - 在 TDB Triple Store 中加载 RDF 三元组时出错

java - 为什么 nullable = false 会强制在插入时插入 FK,但如果没有它,它会进行更新以在 JPA/Hibernate 中设置 FK

c# - Android UI 元素统一

java - 如何从 Android 向 .NET 服务器发出 HTTPS Post 请求?

c - malloc_atfork 内部死锁