我有很多写入文件池的线程,我想同步 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/