【问题标题】:Neo4j java api: Transactions, multiprocessing and thread safetyNeo4j java api:事务、多处理和线程安全
【发布时间】:2013-06-11 05:39:23
【问题描述】:

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

例如考虑以下代码:

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

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

我认为是因为事务是在图级别创建的,所以每个事务(需要并行使用)必须有不同的名称。

如果我错了,请澄清...

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

【问题讨论】:

    标签: java process transactions neo4j


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      相关资源
      最近更新 更多