0

我试图将实体保存到Google App Engine数据存储区,除非它不存在,否则该线程不应继续。如何在GAE数据存储中保存实体时,如果它不存在,同时阻止竞争条件

主要问题是:我想阻止任何竞争条件,例如,如果2个线程在同一时间这样做,只有一个人会成功保存实体。

我不知道究竟是什么,最好的办法,将采用事务工作或者必须依赖于其他解决方案,如使用Memcache的

请在Java

回答

1

假设提供答案在低级别的API两个线程试图保存一个实体与相同的密钥,那么这段代码:

datastore.add(entity); 

会做你想要什么。如果实体已经存在于具有相同密钥的数据存储中,那么.add()将引发异常。

+0

没有所谓的添加类DatastoreService功能,可以请你点我的文档等功能 – man

+0

点击这些Java选项卡docs:https://cloud.google.com/datastore/docs/concepts/entities –

+0

完整的Java源代码位于:https://github.com/GoogleCloudPlatform/java-docs-samples/blob/master/datastore/src /test/java/com/google/datastore/snippets/ConceptsTest.java –