계발자 블로그

[RxJava] Subject 본문

Java/RxJava

[RxJava] Subject

더구더구 2021. 11. 29. 21:05

Subject란?

 

Subject는 Observable과 Observer를 모두 구현한 추상 타입으로

하나의 소스로 부터 다중의 구독자에게 멀티 캐스팅이 가능합니다.

Subject는 Observer를 구현하므로 onNext(), onError(), onComplete()등의 메서드를 수동으로 호출하여

이벤트를 구독자들에게 전달할 수 있습니다.

Subject는 Hot Observable입니다.

 

Subject에는

PublishSubject,

SerializedSubject,

BehaviorSubject,

ReplaySubject,

AsyncSubject,

UniCastSubject가 있습니다

 

이번에는

PublishSubject와 BehaviorSubject를 알아보겠습니다

 

PublishSubject

 

PublishSubject는 Subject를 구현한 가장 단순한 타입 중 한 가지로 구독자들에게 이벤트를 전달합니다.

 

PublishSubject는 observer가 자신을 구독한 시점 이후로 방출되는 item만을 observer에게 방출해줍니다.

 

 

 

 

BehaviorSubject

 

BehaviorSubject는 PublishSubject와 동일하게 동작하지만,

차이점은 새로운 Observer를 통해 구독 시가장 마지막 아이템만을 발행한다는 것입니다.

가장 최근 상태값을 가져오는 것이 중요 할 때 사용할 수 있을 것 같습니다.

 

 

 

 

구독을 시작할 때 Subject가 마지막을 발행한 아이템을 가져오며,

이후에 발행되는 아이템들은 PublishSubject와 동일하게 모두 수신할 수 있습니다!!

'Java > RxJava' 카테고리의 다른 글

[RxJava] Scheduler  (0) 2021.11.29
[RxJava] 다양한 연산자들  (0) 2021.11.26
[RxJava] Observable  (0) 2021.11.26
[RxJava] RxJava란?  (0) 2021.11.26