【问题标题】:Objectify GAE/J Google App Engine: Understanding asynchronous loadObjectify GAE/J Google App Engine:了解异步加载
【发布时间】:2012-11-27 14:11:15
【问题描述】:

我是 Objectify 的新手,我什么都不懂(愚蠢的事情)。 我正在构建一个 Restful Web 服务(带有 restlet)并且我正在创建一个 JSON 响应。所以:

Party party;
    for(Ref<Game> jref : party.games)
    {
        JSONObject object = new JSONObject();

        try{
            Game gAux = jref.get(); //If the value ref is not load, the excetion throws
        }
        catch(IllegalStateException e)
        {
        //Is asynchronous
            jref = ObjectifyService.ofy().load().ref(jref);
        }

        serializeGame(jref.get(), object);
    }

好的,代码很简单,我得到一个 Game 对象,然后将其序列化为 JSON 对象,然后发送响应。 但我不明白异步 load() 是如何工作的。

如果load().ref(jref) 是异步的:

  1. 它返回什么?所以,如果load().ref() 返回一个空对象或一个“未来”对象:
  2. 使用对象时发生了什么? (我使用一个空值对象?,一个“仍在等待”的对象)?
  3. 我如何知道对象已准备就绪? (某个监听器、处理程序?)使用它?
  4. 额外:如果没有任何方法可以知道对象何时准备好,我如何加载 ref 同步?

非常感谢

【问题讨论】:

    标签: java database google-app-engine asynchronous objectify


    【解决方案1】:

    这里已经回答了:

    https://groups.google.com/forum/?fromgroups=#!topic/objectify-appengine/8dLAbSWJVB4

    “简短的回答”是 Ref/Map/List 是异步外观,当您尝试物化 POJO 时会同步阻塞。就像未来一样。

    【讨论】:

    • 非常感谢,我在考虑不同的线程和并发编程:当我使用 load.ref() 时,我认为创建了一个新线程,具有另一个上下文并且该线程加载数据(嗯,也许Objectify使用了一个线程来执行这个队列,但现在不是问题了)。谢谢。
    猜你喜欢
    • 2011-06-19
    • 2014-08-09
    • 2012-05-05
    • 2015-02-26
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    相关资源
    最近更新 更多