想知道以下场景(简化的Java代码):
//Thread A:
FileOutputStream fos = new FileOutputStream(PATH);
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter buffW = new BufferedWriter(osw, SIZE);
for (int i = 0; i < ITER; i++) {
buffW.write(STR);
}
//Thread B:
fos.getFD().sync();是否需要同步sync()调用w/另一个写,还是在OS级别处理这个问题?我的直觉是,这应该是操作系统的关注,但我可能是错的。
文档不涉及这个主题,我只得到一个提示,即FileChannel.force(...)正在进行一些同步,这应该是等价的,但是docs中的场景似乎有点不同。
发布于 2014-03-21 01:48:32
它应该是线程安全的,因为文件描述符是由操作系统管理的。然而,这似乎是一件相当奇怪的事情。
https://stackoverflow.com/questions/22548624
复制相似问题