Чтобы глубже понять Реактивное Программирование, я пытался очень простым способом переопределить класс RxJava Observable. Это заставило меня задать несколько важных вопросов о подходе реактивного программирования.
Я хочу поделиться ими с вами.
То, что я не получаю, это:
реактивное программирование использует обратные вызовы, затем тяжелые и асинхронные операции выполняются рабочим потоком (не основным потоком) нашего приложения.
Этот рабочий поток ожидает операции ввода-вывода, обработки и т. Д., А когда он завершается, он вызывает вызывающего абонента через метод обратного вызова .
Преимущество может состоять в том, что основной поток не должен блокироваться, чтобы ждать ответа обработки, потому что он асинхронный и потому что он вызывается обратно, когда процесс завершен.
Мой вопрос:
В чем преимущество перед простой многопоточностью?
Я имею в виду, в многопоточности обратного вызова нет , поэтому рабочий поток не вызывает обратный вызов основного потока, в любом случае он возвращает результат вызывающей стороне (например, с использованием Callable).
В обоих этих сценариях один рабочий поток блокируется для ожидания операций ввода-вывода или обработки.
Единственная разница - обратный вызов по возврату.
Так чего мне не хватает?