如果您正苦於以下問題: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();
}
示例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());
}
示例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);
}
示例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);
}
示例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;
}
示例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);
}
示例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();
}
}
示例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);
}
}
}
示例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]);
}
}
示例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();
}
}