FileDescriptor.sync()线程安全



对以下场景(简化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()调用,或者在操作系统级别进行处理?我的直觉告诉我,这应该是操作系统的问题,但我可能错了。

文档没有涉及这个主题,我只得到一个提示,即FileChannel.force(...)有一些同步,这应该是等效的,但文档中的场景似乎有些不同。

应该是线程安全的,因为文件描述符是由操作系统管理的。不过,这似乎是一件相当奇怪的事情。

相关内容

  • 没有找到相关文章

最新更新