RX Java – share() and publish() What is the difference between autoconnect()?
•
Java
In my opinion I thinkhare () and release () Autoconnect () is the same But in this code, the result is different
Observable<Integer> cold = Observable.create(subscriber -> { for (int i = 0; i <= 2; i++) { System.out.println("Hot Observable Emit " + i); subscriber.onNext(i); } }); ConnectableObservable<Integer> connectble = cold.publish().autoConnect(2); //Obserable(Integer) connectavle = cold.share(); connectble.subscribe(subscriber1); connectble.subscribe(subscriber2);
publish(). Autoconnect() output
Hot Observable Emit 0 Subscriber 1 : 0 Subscriber 2 : 0 ....
Share() output
Hot Observable Emit 0 Subscriber 1 : 0 //the subscriber2 not receive event
In this case, can't we use share () for multicast in Rx Java? I found that conclusion is not suitable for this situation
Test environment: Oracle jdk1 8 rx-java 1.2 IDEA ubuntu
Solution
The difference between them is that when a subscriber unsubscribes from the share, the upstream is disconnected. When a new subscriber subscribes, the upstream source re subscribes and starts from scratch (if cold)
Autoconnect waits for a specified number of subscribers to connect once, and never disconnects when all subscribers unsubscribe This is a description of how it works
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码