所以我有一个文件,多个线程试图同时写入。
我使用Buffered Writer写入文件。现在,我的问题是,如果使用append将线程的内容追加到文件中,那么线程安全吗?
答案 0 :(得分:1)
在检查实现时,您会看到有一个锁定对象,并且诸如write
或flush
之类的方法正在与公用对象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);
}
这两个写入操作不是原子执行的,因此有可能两个线程的写入操作会交错。
如果对线程安全性有任何疑问,请自己进行管理。