我FileManager
暴露了一个write
方法,其中包含一个synchronized块,以防止并发问题:包含同步块的实例是否需要单例?
class FileManager{
Object lock = new Object();
public void write() {
synchronized (lock) {
String id = nextId();
write(id);
}
}
}
但是,如果存在的FileManager
多个实例,它们的写入方法仍然可以并发执行。将FileManager设置为单例可以很好地解决这个可能的并发问题吗?或者我应该以另一种方式使用syncrhonized
关键字?
如果你不想两个'FileManager'实例能够运行'write'同时,你可以让它成为一个单身人士。或者你可以让'lock'字段静态。然后你的'FileManager's将在同一个对象上同步。 – khelwood
任何关于哪个更可取的建议? – ab11