GAE fetchAsync - какой смысл? - PullRequest
       2

GAE fetchAsync - какой смысл?

1 голос
/ 06 сентября 2011

Google рекомендует нам использовать fetchAsync вместо других средств, заявив, что, поскольку он асинхронный, он будет использовать меньше часов экземпляра.Однако метод возвращает Future<HTTPResponse>, и вы должны использовать метод .get() для извлечения фактических данных.Метод .get() является блокирующим, т.е. выполнение вашей программы не будет продолжаться до тех пор, пока она не вернется (или не сгенерирует исключение).

Вопрос в том, какая разница?Действительно ли возможно сэкономить время экземпляра без фактического использования Thread с?

1 Ответ

2 голосов
/ 06 сентября 2011

Разница в том, что вы можете пойти и сделать что-то еще между вашим fetchAsync и вашим get.

Вы можете сделать что-то вроде (псевдокод):

future = fetcher.fetchAsync (url)
while not future.isDone():
    doSomethingElse()
current = future.get()

Теперь вы можете достичь той же цели в многопоточных средах, просто создав поток для вызова fetch, но это означает управление вашими собственными потоками и взаимодействиями между ними. В любом случае, как отмечает okrasz в комментарии, создание новых тем невозможно в GAE (см. здесь ).

Если все, что вам нужно, это асинхронность (это даже слово?), Не беспокоясь обо всех этих дополнительных вещах, вы можете использовать комбинацию fetchAsync/isDone/get, как показано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...