Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Titan中的多线程引发异常_Java_Titan - Fatal编程技术网

Java Titan中的多线程引发异常

Java Titan中的多线程引发异常,java,titan,Java,Titan,我正在用多个线程在Titan中创建一个顶点。 这是我的密码 尝试连接到Titan,指定模式,然后添加顶点 g = TitanFactory.open("/conf/titan-cassandra.properties"); TitanManagement mgmt = g.getManagementSystem(); final PropertyKey userid = mgmt.makePropertyKey("userid").dataType(Integer.class).make();

我正在用多个线程在Titan中创建一个顶点。 这是我的密码

尝试连接到Titan,指定模式,然后添加顶点

g = TitanFactory.open("/conf/titan-cassandra.properties");
TitanManagement mgmt = g.getManagementSystem();
final PropertyKey userid = mgmt.makePropertyKey("userid").dataType(Integer.class).make();
TitanGraphIndex namei = mgmt.buildIndex("userid",Vertex.class).addKey(userid).unique().buildCompositeIndex();
mgmt.setConsistency(namei, ConsistencyModifier.LOCK);
mgmt.commit();
然后我调用一个函数来添加顶点

多线程访问函数Add Vertex,该函数接受输入参数-随机生成的唯一数字entityPK

tx1 = g.newTransaction();
Vertex user_ver = tx1.addVertexWithLabel("user");
user_ver.setProperty("userid",entityPK);
//Adding other properties for vertex
tx1.commit();`
我了解到引发异常的原因是没有指定锁。但即使指定了锁,也会引发异常

com.thinkaurelius.titan.core.TitanException:由于持久化期间出现异常,无法提交事务,如果此代码:

tx1 = g.newTransaction();
Vertex user_ver = tx1.addVertexWithLabel("user");
user_ver.setProperty("userid",entityPK);
//Adding other properties for vertex
tx1.commit();
在addVertex函数中,多个线程正在调用addVertex,我认为您使用的newTransaction不太正确。这将创建所谓的线程事务。线程事务是多个线程作用于同一事务的事务。在您的使用中,每个线程都在创建自己的不同事务。根据您的描述,我认为正确的方法是使addVertex成为:

如果你需要锁,我也会考虑放下锁。

Vertex user_ver = g.addVertexWithLabel("user");
user_ver.setProperty("userid",entityPK);
//Adding other properties for vertex
g.commit();