我的應用程序目前面臨的一個問題是,競爭條件有時會導致多個線程將相同的值寫入數據存儲。查詢Google App Engine數據存儲時的併發問題
的僞代碼如下所示:
public void writeToDatastore(ValueObject obj){
boolean objectExists = checkDatastoreForObject(obj);
if(!objectExists){
doSomeStuff();
writeObjectToDatastore(obj);
}
}
有時候,從任何已被寫入之前數據存儲,這導致了物體的多個實例讀取兩個或多個線程正在持續。
添加關鍵字(或其他併發結構)可解決問題 - 前提是應用程序只有一個實例正在運行。
在分佈式環境中如何解決這些類型的併發問題?
你可以手動指定密鑰ID,如果你對每個價值的獨特屬性。然後,寫入寫入現有值的頂部。 – GAEfan