所以我有一个多个线程尝试同时写入的文件。我使用 Buffered Writer 写入文件。现在,我的问题是,如果使用 append 将线程的内容附加到文件中,它会是线程安全的吗?
2 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
“它是线程安全的”问题的问题之一是答案取决于您所说的线程安全性。
一个类可以是线程安全的,因为它自己的不变量不能被多个线程同时使用而破坏;但是您仍然可以以非线程安全的方式使用该类。
例如:
void write(int a, String blah) {
writer.write(a);
writer.write(blah);
}
这两个写入不是原子执行的,因此两个线程的写入有可能交错。
如果您对线程安全有任何疑问,请自行管理。
长风秋雁
TA贡献1757条经验 获得超7个赞
当你检查实现时,你可以看到有一个锁对象和方法,例如write或flush正在与一个公共对象同步lock。
synchronized (lock) {
... here is the body of the method, enclosed in the sync block
}
添加回答
举报
0/150
提交
取消