У меня есть опыт работы с RxJava, чтобы делать реактивные приложения. Однако мне интересно, как это (и другие библиотеки, такие как Spring Reactor) на самом деле работает внутри. Кажется, я не могу найти никакой интересной информации об этом в Интернете, только типичные простые учебники. Как обстоят дела с потоками и т. д.? Все ли «актеры» работают в одном потоке? Или это нить за "декларацию"?
Как RxJava на самом деле работает внутри в отношении многопоточности?
Ответы (1)
Одним из ключевых моментов RxJava является то, что он позволяет как владельцу API, так и потребителю выбирать модель выполнения (и изменять ее, не нарушая никаких интерфейсов). Если вы хотите предоставить наблюдаемое, которое выполняется в потоке вызывающего подписчика, внутри ExecutorService
, на Актере и т. д., это зависит от вас. Точно так же вы можете подписаться на наблюдаемый объект, используя любую подходящую модель потоков — будь то блокировка в вызывающем потоке или в каком-либо пуле потоков. Суть в том, что сама библиотека не имеет отношения к модели многопоточности; вам нужно решить, что лучше всего подходит для рабочей нагрузки, которую вы выставляете.
person
Chris Mowforth
schedule
29.03.2017
ForkJoinPool
в java. Таким образом, все акторы работают с ограниченным количеством потоков, которое зависит от аппаратных потоков. - person bashnesnos   schedule 29.03.2017