Java线程中的BufferedWriter.append安全吗?

时间:2018-11-13 21:18:35

标签: java processbuilder

所以我有一个文件,多个线程试图同时写入。

我使用Buffered Writer写入文件。现在,我的问题是,如果使用append将线程的内容追加到文件中,那么线程安全吗?

2 个答案:

答案 0 :(得分:1)

在检查实现时,您会看到有一个锁定对象,并且诸如writeflush之类的方法正在与公用对象lock同步。

synchronized (lock) {
  ... here is the body of the method, enclosed in the sync block
}

答案 1 :(得分:1)

“线程安全吗”这个问题的其中一个问题是答案取决于您所说的线程安全性。

一个类可以是线程安全的,这意味着它自己的不变式不能被多个线程同时使用而破坏;但是您仍然可以以非线程安全的方式使用该类。

例如:

void write(int a, String blah) {
  writer.write(a);
  writer.write(blah);
}

这两个写入操作不是原子执行的,因此有可能两个线程的写入操作会交错。

如果对线程安全性有任何疑问,请自己进行管理。