java - Neo4j java api : Transactions, 多处理和线程安全

标签 java process transactions neo4j

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

例如考虑以下代码:

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

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

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

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

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

最佳答案

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

关于java - Neo4j java api : Transactions, 多处理和线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17037184/

相关文章:

java - 为什么 Java.lang.Process 没有在此代码中抛出 InterruptedException?

android - 如何在 Linux 中未崩溃时显式转储 native (C/C++)进程的调用堆栈信息

api - 支付平台的 REST API 交易

asp.net - Entity Framework - "New transaction is not allowed because there are other threads running in the session"

java - java项目中编写文本加解密的方法

java - LIBGDX 字体在不同平台上的不同位置

java - 对齐 Box 中的组件

process - 哪个需要更长的时间?在用户模式和内核模式之间切换还是在两个进程之间切换?

go - 使用不带 WATCH 的 go-redis 包将流水线和事务都实现到 redis 集群

java - 加载 rJava 时出错