0

Есть вопрос по поводу асинхронной реализации метода, в каких случаях она выгодна? сейчас метод выполняется быстрее чем его реализация, а если синхронизировать с помощью семафор не вижу сильных отличий от одного потока

Call call = client.newCall(request);
call.enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
        ...
    }
@Override
public void onResponse(Call call, Response response) {
    ...
}

});

Barmaley
  • 81,300
  • Асинхронные вызовы не блокируют выполнение потока, поток может выполнять полезную работу во время ожидания ответа на запрос. – Komdosh Sep 07 '20 at 11:03
  • метод выполняется быстрее чем его реализация - это что имеется ввиду? – Roman-Stop RU aggression in UA Sep 07 '20 at 11:07
  • @Komdosh то есть если у меня многопоточная программа и методы отмечены как synchronized, то без обратных вызовов поток будет блокироваться? – Artemii Kurilko Sep 07 '20 at 11:07
  • @RomanKonoval допустим метод возвращает переменную, а реализации onResponse инициализирует переменную, тогда программа выдаст налл и после переменная будет инициализирована – Artemii Kurilko Sep 07 '20 at 11:09
  • @ArtemiiKurilko ну да, более того если вы используете synchronized то все потоки встанут в этом месте и будут ожидать ответ на один запрос – Komdosh Sep 07 '20 at 11:12
  • @Komdosh как сделать чтобы методы выполнялись паралельно? убрать synchronized и добавить реализацию Callback? – Artemii Kurilko Sep 07 '20 at 11:15
  • 2
    В вопросе и обменом реплик в комментариях много возможностей истолковать вопросы и ответы неправильно и сделать абсолютно неправильные выводы. Нужны не абстрактные вопросы типа если у меня многопоточная программа и методы отмечены как synchronized, то без обратных вызовов поток будет блокироваться, а точный код. Т.к. ответ на этот вопрос зависит от того какие методы помечены и на каких объектах они вызываются и еще много нюансов. И в зависимости от этого ответ да может быть как верным, так и нет. В общем случае правильный ответ - это зависит от деталей не включенных в вопрос – Roman-Stop RU aggression in UA Sep 07 '20 at 11:23
  • @ArtemiiKurilko Асинхронность != Многопоточность, Роман дал исчерпывающий комментарий на ваши вопросы, действительно, чтобы что-то советовать не хватает деталей. – Komdosh Sep 07 '20 at 11:34

0 Answers0