Ожидание метода из другого потока в Java - PullRequest
0 голосов
/ 28 апреля 2020

В моем приложении android я делаю два сетевых вызова, чтобы получить два ресурса от сервера. Эти два вызова происходят из двух разных потоков, и они не зависят друг от друга.

public Resource1 getresources1(Params params1) {
  return mResourceGetter.get(params1).getResource1();
}

public Resource1 getresources2(Params params2) {
  return mResourceGetter.get(params2).Resource2();
}

Оба метода используют один и тот же экземпляр HTTP-клиента для получения ресурсов. Сейчас я планирую получить оба ресурса за один звонок. Но без изменения существующей архитектуры.

Resource2 mResource2 = null;
public Resource1 getresourcesGlobal(Params params1) {

  return getResource(params1).;
}

public Resource2 getresources2(Params params2) {
  // Block untill getResource(). call completes its execution.
  return mResource2;
}

private Resource1 getResource(Params params) {
 Params globalparames = GetParamsRelatedToResource1and2();

 Resource response= mResourceGetter.get(globalparames);
 if (!response.isPresent()) {
  // Throw exception.  and handle it.
 }

 if (response.getResource2()!= null) {
   mResource2 = response.getResource2()
 } else {
  // do error handling.
 }

 return response.getResource1();
}

Мне интересно, это правильный способ сделать это? Если нет предложений о том, как обращаться со сценарием ios, как эта эффективность. Любые указания о том, как эффективно заблокировать эту функцию?

Я профилировал сетевой вызов, это займет в среднем 500 мс.

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