OperatorSwitch.java 文件源码

java
阅读 20 收藏 0 点赞 0 评论 0

项目:RxJavaFlow 作者:
public SwitchSubscriber(Subscriber<? super T> child) {
    s = new SerializedSubscriber<T>(child);
    ssub = new SerialSubscription();
    child.add(ssub);
    child.setProducer(new Producer(){

        @Override
        public void request(long n) {
            if (infinite) {
                return;
            }
            if(n == Long.MAX_VALUE) {
                infinite = true;
            }
            InnerSubscriber localSubscriber;
            synchronized (guard) {
                localSubscriber = currentSubscriber;
                if (currentSubscriber == null) {
                    initialRequested = n;
                } else {
                    // If n == Long.MAX_VALUE, infinite will become true. Then currentSubscriber.requested won't be used.
                    // Therefore we don't need to worry about overflow.
                    currentSubscriber.requested += n;
                }
            }
            if (localSubscriber != null) {
                localSubscriber.requestMore(n);
            }
        }
    });
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号