當前位置: 首頁>>編程示例>>Java>>正文


Java Flow類代碼示例

如果您正苦於以下問題:Java Flow類的具體用法?Java Flow怎麽用?Java Flow使用的例子?那麽, 這裏精選的代碼示例或許能為您提供幫助。

Flow類屬於java.util.concurrent包,以下是Flow類的10個代碼示例,這些例子默認根據受歡迎程度排序。您可以為感覺有用的代碼點讚,您的評價將有助於係統推薦出更好的Java代碼示例。

示例1: cancelRequests

import java.util.concurrent.Flow; //導入依賴的package包/類
@Test
public void cancelRequests() {
    SubscriptionArbiter sa = new SubscriptionArbiter();

    sa.arbiterReplace(new Flow.Subscription() {

        @Override
        public void request(long n) {
        }

        @Override
        public void cancel() {
            sa.request(1);
        }
    });

    sa.cancel();
}
 
開發者ID:akarnokd,項目名稱:Reactive4JavaFlow,代碼行數:19,代碼來源:SubscriptionArbiterTest.java

示例2: mapperThrows

import java.util.concurrent.Flow; //導入依賴的package包/類
@Test
public void mapperThrows() {
    DirectProcessor<Integer> bp = new DirectProcessor<>();

    TestConsumer<Object> tc = bp
            .switchFlatMap((CheckedFunction<Object, Flow.Publisher<Object>>) v -> {
                throw new IOException();
            }, 2)
            .test();

    bp.onNext(1);

    tc.assertFailure(IOException.class);

    assertFalse(bp.hasSubscribers());
}
 
開發者ID:akarnokd,項目名稱:Reactive4JavaFlow,代碼行數:17,代碼來源:FolyamSwitchFlatMapTest.java

示例3: onSubscribe

import java.util.concurrent.Flow; //導入依賴的package包/類
@Override
public void onSubscribe(Flow.Subscription s) {
    this.s = s;

    try {
        parent.onSubscribe.accept(s);
    } catch (Throwable ex) {
        FolyamPlugins.handleFatal(ex);
        s.cancel();
        actual.onSubscribe(EmptySubscription.INSTANCE);
        onError(ex);
        return;
    }

    actual.onSubscribe(this);
}
 
開發者ID:akarnokd,項目名稱:Reactive4JavaFlow,代碼行數:17,代碼來源:ParallelPeek.java

示例4: subscribeActual

import java.util.concurrent.Flow; //導入依賴的package包/類
@SuppressWarnings("unchecked")
@Override
protected void subscribeActual(FolyamSubscriber<? super T> s) {
    Flow.Publisher<? extends T>[] array = new Flow.Publisher[8];
    int n = 0;
    try {
        for (Flow.Publisher<? extends T> p : sourcesIterable) {
            if (n == array.length) {
                array = Arrays.copyOf(array, n << 1);
            }
            array[n++] = Objects.requireNonNull(p, "a source is null");
        }
    } catch (Throwable ex) {
        FolyamPlugins.handleFatal(ex);
        EmptySubscription.error(s, ex);
        return;
    }

    FolyamOrderedMergeArray.subscribe(s, array, n, comparator, prefetch, delayErrors);
}
 
開發者ID:akarnokd,項目名稱:Reactive4JavaFlow,代碼行數:21,代碼來源:FolyamOrderedMergeIterable.java

示例5: createFlowPublisher

import java.util.concurrent.Flow; //導入依賴的package包/類
@Override
public Flow.Publisher<Integer> createFlowPublisher(final long elements) {
    final LastProcessor<Integer> pp = new LastProcessor<>();

    SchedulerServices.io().schedule(() -> {
        long start = System.currentTimeMillis();
        while (!pp.hasSubscribers()) {
            try {
                Thread.sleep(1);
            } catch (InterruptedException ex) {
                return;
            }

            if (System.currentTimeMillis() - start > 200) {
                return;
            }
        }

        for (int i = 0; i < elements; i++) {
            pp.onNext(i);
        }
        pp.onComplete();
    });
    return pp;
}
 
開發者ID:akarnokd,項目名稱:Reactive4JavaFlow,代碼行數:26,代碼來源:AsyncProcessorAsPublisherTckTest.java

示例6: onError

import java.util.concurrent.Flow; //導入依賴的package包/類
@Override
public void onError(Throwable throwable) {
    if (once) {
        actual.onError(throwable);
        return;
    }
    once = true;
    Flow.Publisher<? extends T> p;

    try {
        p = Objects.requireNonNull(handler.apply(throwable), "The handler returned a null Flow.Publisher");
    } catch (Throwable ex) {
        actual.onError(new CompositeThrowable(throwable, ex));
        return;
    }

    long c = produced;
    if (c != 0) {
        arbiterProduced(c);
    }
    p.subscribe(this);
}
 
開發者ID:akarnokd,項目名稱:Reactive4JavaFlow,代碼行數:23,代碼來源:FolyamOnErrorResumeNext.java

示例7: onSubscribe

import java.util.concurrent.Flow; //導入依賴的package包/類
public final void onSubscribe(Flow.Subscription subscription) {
    upstream = subscription;
    arbiterReplace(subscription);
    if (firstTimeout != null) {
        AtomicDisposable d = new AtomicDisposable();
        task = d;

        onStart();
        if (d.get() == null) {
            TimeoutInnerSubscriber inner = new TimeoutInnerSubscriber(this, 0);
            if (d.compareAndSet(null, inner)) {
                firstTimeout.subscribe(inner);
            }
        }
    } else {
        onStart();
    }
}
 
開發者ID:akarnokd,項目名稱:Reactive4JavaFlow,代碼行數:19,代碼來源:FolyamTimeoutSelectorFallback.java

示例8: onNext

import java.util.concurrent.Flow; //導入依賴的package包/類
public final void onNext(T item) {
    AutoDisposable d = task;
    if (d != null) {
        d.close();
    }

    long idx = (long)INDEX.getAcquire(this);
    if (idx != Long.MIN_VALUE && INDEX.compareAndSet(this, idx, idx + 1)) {
        next(item);

        Flow.Publisher<?> p;

        try {
            p = Objects.requireNonNull(itemTimeoutSelector.apply(item), "The itemTimeoutSelector returned a null Flow.Publisher");
        } catch (Throwable ex) {
            onError(ex);
            return;
        }
        // replace
        TimeoutInnerSubscriber inner = new TimeoutInnerSubscriber(this, idx + 1);
        if (DisposableHelper.replace(this, TASK, inner)) {
            p.subscribe(inner);
        }
    }
}
 
開發者ID:akarnokd,項目名稱:Reactive4JavaFlow,代碼行數:26,代碼來源:FolyamTimeoutSelectorFallback.java

示例9: subscribe

import java.util.concurrent.Flow; //導入依賴的package包/類
void subscribe(Flow.Publisher<? extends T>[] sources, int n) {
    for (int i = 0; i < n; i++) {
        if (cancelled) {
            return;
        }
        sources[i].subscribe(subscribers[i]);
    }
}
 
開發者ID:akarnokd,項目名稱:Reactive4JavaFlow,代碼行數:9,代碼來源:FolyamZipLatestArray.java

示例10: onSubscribe

import java.util.concurrent.Flow; //導入依賴的package包/類
public void onSubscribe(Flow.Subscription subscription) {
    //count = bufferSize - bufferSize / 2;// 當消費一半的時候重新請求
    (this.subscription = subscription).request(bufferSize);
    System.out.println("開始onSubscribe訂閱");
    try {
        Thread.sleep(100);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}
 
開發者ID:kkTranslation,項目名稱:Java-9-Spring-Webflux,代碼行數:11,代碼來源:DockerXDemoSubscriber.java


注:本文中的java.util.concurrent.Flow類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。