Multi-threading with OrientDB
OrientDB supports multi-threaded access to the database. The OrientDB
is thread safe, the ODatabase*
and OrientGraph*
instances are not thread-safe. You must only use one of this instance per thread and only use each instance in one thread at a time.
The ODocument
, OrientVertex
and OrientEdge
classes are also not thread-safe. So, sharing them across threads can lead to unexpected errors that may prove difficult to recognize.
For more information, see Concurrency.
||Implicit usage of multiple database instances from the same thread is no longer allowed. Any attempt to manage multiple instances in the same thread must explicitly call the db.activateOnCurrentThread()
method against the database instance before you use it.|
Basic Example Multi-threading
Example of multithread usage:
OrientDB orientDB = new OrientDB("remote:localhost", OrientDBConfig.defaultConfig());
// Spawn two threads that do some job
new Thread(() ->{
ODatabaseDocument database = orientDB.open("database", "admin", "admin");
//... Job One
database.close();
).start();
new Thread(() ->{
ODatabaseDocument database = orientDB.open("database", "admin", "admin");
//... Job two
database.close();
}).start();