标签: java synchronization filewriter
我有很多线程写入文件池,我想同步文件编写器以避免脏附加。
首先我想到了这个:
public synchronized void write(Ing ing) { File file=getFile(ing); FileWriter writer; writer=new FileWriter(file,true); // ... }
但是这会同步所有写入,并且我只想同步在SAME文件上写入。
答案 0 :(得分:4)
要在每个文件上进行同步,您似乎可以在ing变量上进行同步,该变量包含对文件的引用:
ing
public void write(Ing ing) { synchronized(ing) { File file = getFile(ing); FileWriter writer = new FileWriter(file, true); ... } }
答案 1 :(得分:0)
默认情况下 FileWrite.append() 是同步的。
在Writer.java查看。
Writer.java