2011-07-14 25 views
0

我正在使用Google App Engine構建應用程序。該應用程序由幾個servlet組成,其中一個具有一個靜態成員對象,該對象擁有許多內部狀態。多個Android手機聯繫這個servlet,導致servlet更新靜態成員對象的狀態。但是,當多個手機碰巧同時與服務器通信時,我遇到了同步問題,其中靜態對象一次被多個線程修改。我試過投入一些同步塊,但這似乎沒有幫助。App Engine上的同步

我認爲原因與App Engine如何爲HTTP請求產生線程有關,但我不確定。在App Engine中同步訪問共享對象的標準方式是什麼?謝謝!

回答

2

您的GAE應用程序可以在不同的服務器上啓動,可以一次啓動並且很少有實例。任何情況下都可以隨時啓動或殺死,之前沒有任何通知。所以,任何內存狀態都是無用的。

您必須改用memcache服務或數據庫。

+0

因此,使用數據存儲和關聯的內存緩存是將任何狀態存儲在服務器上的唯一方法? – Jeffrey

+0

正好。你可以使用內存作爲'幻影緩存',但也有幾兆內存限制 –