一次从工厂获取对服务的引用并使用它来处理多个请求是否可以?使用以下 servlet 伪代码可以最好地解释它:
SomeServlet...{
MemcacheService memcacheService = MemcacheServiceFactory.getMemcacheService();
UserService userService = UserServiceFactory.getUserService();
DatastoreService datastoreService = DatastoreServiceFactory.getDatastoreService();
doGet(...){
userService.doSomething(...);
}
...
}
这可能是一个过早的优化,但我只是想知道为每个请求获取服务的成本是多少。请分享您的见解。
最佳答案
在 google 组线程中 http://groups.google.com/group/google-appengine-java/browse_thread/thread/d3f1536084f59c22 ,Ikai Lan(来自 Google 的 GAE 团队)说 MemcacheService 是线程安全的,但是缓存它没有用,因为每次从工厂获取服务时都只有一个对象分配。
由于所有服务都是以类似的方式获取的,我认为我们可以假设它们都遵循相同的设计并且都是线程安全的。但由于在每次查询时获取新实例的成本并不高,因此我不会缓存它们。
关于java - Google App Engine (java) 服务类是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5128106/