首页 文章

Neo4j java api:事务,多处理和线程安全

提问于
浏览
1

在试验Neo4j图时,我发现在任何给定时间只能有一个具有“给定事务名称”的事务 . 这是真的还是我在理解交易时犯了一些错误?

例如考虑以下代码:

updateNode(Node node){
    Transaction txNode = graphDB.beginTx();
    try{
        //do some operations on node
        txNode.success();
    }finally{
        txNode.finish();
    }
}

如果我在同一个“graphDB”上运行多个进程或多个线程,其中每个进程/线程可以为不同的节点调用上面的函数,它是否只有一个名为“txNode”的事务,这会导致线程/进程之间出现问题?

我认为这是因为,事务是在图层级创建的,因此每个事务(需要并行使用)必须具有不同的名称 .

请澄清我是否错了......

如果我是对的,我们如何处理这种情况呢?我们如何为并行运行的每个此类线程/进程创建具有不同名称的事务?

1 回答

  • 1

    事务“txNode”只是您创建的事务实例的变量名 . 每次执行方法时,都会创建一个新事务 . 同一个不会被重复使用 . 您不必担心在应用程序级别区分事务 .

相关问题