Java 如何仅在GAE数据存储中保存不存在的实体,同时防止竞争条件
我试图保存一个实体到谷歌应用程序引擎数据存储只有当它不存在,如果它这样做线程不应该继续 主要问题是:我想防止任何竞争条件,这样,如果两个线程同时执行此操作,则只有一个线程能够成功保存实体 我不确定这方面的最佳方法是什么,使用事务是可行的还是必须依赖其他解决方案,例如使用MemcacheJava 如何仅在GAE数据存储中保存不存在的实体,同时防止竞争条件,java,multithreading,google-app-engine,google-cloud-datastore,Java,Multithreading,Google App Engine,Google Cloud Datastore,我试图保存一个实体到谷歌应用程序引擎数据存储只有当它不存在,如果它这样做线程不应该继续 主要问题是:我想防止任何竞争条件,这样,如果两个线程同时执行此操作,则只有一个线程能够成功保存实体 我不确定这方面的最佳方法是什么,使用事务是可行的还是必须依赖其他解决方案,例如使用Memcache 请在java的低级API中提供答案假设两个线程都试图用相同的键保存一个实体,则此代码: datastore.add(entity); 我会做你想做的。如果数据存储中已存在具有相同密钥的实体,则.add()将引发
请在java的低级API中提供答案假设两个线程都试图用相同的键保存一个实体,则此代码:
datastore.add(entity);
我会做你想做的。如果数据存储中已存在具有相同密钥的实体,则.add()将引发异常。假设两个线程都试图使用相同密钥保存实体,则此代码:
datastore.add(entity);
我会做你想做的。如果数据存储中已存在具有相同密钥的实体,则.add()将引发异常。从App Engine调用数据存储时,api不同。使用事务。首先尝试获取()实体,看看它是否在那里。如果不是,则将()放在实体上 下面是一些示例代码,用于演示使用App Engine API的事务:
从App Engine调用数据存储时,api是不同的。使用事务。首先尝试获取()实体,看看它是否在那里。如果不是,则将()放在实体上 下面是一些示例代码,用于演示使用App Engine API的事务:
没有名为add for class DatastoreService的函数,您能给我指一下此类函数的文档吗单击这些文档中的Java选项卡:完整的Java源代码在这里:除非我缺少什么,app engine上数据存储的api是com.google.appengine.api.datastore.*而不是com.google.cloud.datastore.*没有名为add for class DatastoreService的函数,您能给我指一下此类函数的文档吗单击这些文档中的Java选项卡:完整的Java源代码在这里:除非我缺少什么,appengine上数据存储的api是com.google.appengine.api.datastore.*而不是com.google.cloud.datastore*