2016-04-19 17 views

回答

3

如果您使用数据库实例,常用的方法是为每个线程分别设置此对象的实例,为了简化此任务,您可以使用数据库对象池,例如com.orientechnologies.orient.core.db.OPartitionedDatabasePool 。 通常只有OStorage实例是线程安全的,其余对象不应该在线程之间共享,而应该使用数据库实例加载。

+0

嗯...这种有点难以从数据库中提取和保存数据。通过ODocument API查看我发现有很多不可线程安全的可变数据(例如_dirty)。 有什么办法让数据库反序列化成不可变的数据结构? – user48956

+0

您可以在线程之间交换文档/顶点/边线,您不能一次在2个线程中更改它们。你也不能共享数据库实例,你应该像连接或会话那样考虑它们。 –