【问题标题】:GAE synchronized data with instancesGAE 与实例同步数据
【发布时间】:2016-09-22 12:37:42
【问题描述】:

如果我有这样的课程:

public class Example
{
    ArrayList<String> vector;

    public Example singleton = new Example();

    private Example()
    {
        //Read data from BD and fill the vector. Example vector:  ["foo","voo","faa","vuu","vee"]
    }   



    public synchronized removeElement()
    {
        vector.remove(0);
    }

    public synchronized changeElement()
    {
        vector.set(0,"fii");
    }
}

如果有多个实例在运行,其中一个执行removeElement方法,那么另一个实例的值会发生什么?如果其中一个执行changeElement方法?

【问题讨论】:

    标签: google-app-engine synchronization instance


    【解决方案1】:

    GAE 可以有多个 JVM 实例并行运行,因此更新内存中的值将仅在该实例上可见。

    您应该使用共享数据存储:memcache(免费、快速但易失)或数据存储(昂贵、较慢但一致)。

    【讨论】:

      【解决方案2】:

      App Engine 实例在不同的 JVM 上运行,因此它们各自在内存中都有单独的“vector”实例。要在这些之间同步状态,您需要使用共享状态服务,例如数据存储或内存缓存。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-02
        • 1970-01-01
        • 2021-12-27
        • 1970-01-01
        • 1970-01-01
        • 2015-01-23
        • 1970-01-01
        • 2021-09-11
        相关资源
        最近更新 更多