Java同步文件写入

时间:2014-06-11 14:30:21

标签: java synchronization filewriter

我有很多线程写入文件池,我想同步文件编写器以避免脏附加。

首先我想到了这个:

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

但是这会同步所有写入,并且我只想同步在SAME文件上写入。

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

默认情况下 FileWrite.append() 是同步的。

Writer.java查看。

enter image description here