Java同步文件写入
我有许多线程写入文件池,我想同步filewriter以避免脏附加 首先我想到了这一点:Java同步文件写入,java,synchronization,filewriter,Java,Synchronization,Filewriter,我有许多线程写入文件池,我想同步filewriter以避免脏附加 首先我想到了这一点: public synchronized void write(Ing ing) { File file=getFile(ing); FileWriter writer; writer=new FileWriter(file,true); // ... } 但这会同步所有写入操作,我只想同步同一文件上的写入操作。要同步每个文件,似乎可以同步ing变量,该变量包含对文件的引用:
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);
...
}
}
默认情况下,FileWrite.append()是同步的 查看
Writer.java
“Ing”是来自Dao对象的实体,另一个线程可以获得相同的对象(但不是相同的对象!)并写入相同的文件。我说得对吗?@Tobia如果是这样,那么
getFile()
做什么呢?如果它返回相同的文件对象,也许您可以使用它。是的,当然getFile()会根据路径字符串获取文件对象。另一次,可能有两个不同的文件对象指向同一路径。。。