Java同步文件写入

标签 java synchronization filewriter

我有很多写入文件池的线程,我想同步 filewriter 以避免脏追加。

首先我想到了这个:

public synchronized void write(Ing ing) {
    File file=getFile(ing);
    FileWriter writer;
    writer=new FileWriter(file,true);
    // ...
}

但这会同步所有写入,而我只想同步对同一文件的写入。

最佳答案

要在每个文件上同步,似乎可以在 ing 变量上同步,该变量包含对文件的引用:

public void write(Ing ing) {
    synchronized(ing) {
        File file = getFile(ing);
        FileWriter writer = new FileWriter(file, true);
        ...
    }
}

关于Java同步文件写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24165593/

相关文章:

java - Java 写入文件 – BufferedWriter

java - Spring boot2 提示 CircuitBreakerConfigurationOnMissingBean

java - 我应该始终对类字段使用私有(private)访问修饰符吗?

java - 谷歌分析报告 API v4 : get data from date range between two dates accurate to hours

c - Solaris 上的安德森队列锁

mysql - 在不完全同步时对齐时间戳

java - 使用具有参数化功能的 jenkins 执行 AWS 设备场

mysql - 如何使用PHPMyAdmin同步?

java - 关于 FileWriter 的说明

java - 不读取文件?