Я изучаю API-интерфейс FLOW Stream в Java и в настоящее время создаю пример, основанный на примере oracle community . Проблема в том, что я получаю не ожидаемый результат, а только строку SUBSCRIBING, которая печатается внутри метода onSubscribe
. Я уже проверил и нашел submissionpublisher-on-submit-not-invoking-onnext-subscriber в StackOverflow, но не работал, потому что я уже звонил request(Long N)
.
import java.util.concurrent.Flow;
public class Computer<T> implements Flow.Subscriber<T> {
private Flow.Subscription subscription;
@Override
public void onSubscribe(Flow.Subscription subscription) {
this.subscription = subscription;
System.out.println("SUBSCRIBING");
this.subscription.request(1);
}
@Override
public void onNext(T item) {
System.out.println(String.format("Got %s", item.toString()));
this.subscription.request(1);
}
@Override
public void onError(Throwable throwable) {
throwable.printStackTrace();
}
@Override
public void onComplete() {
System.out.println("DONE");
}
}
-
import java.util.List;
import java.util.concurrent.SubmissionPublisher;
public class Sensor {
public static void main(String[] args) {
SubmissionPublisher<String> submissionPublisher = new SubmissionPublisher<>();
Computer<String> subscriber = new Computer<>();
submissionPublisher.subscribe(subscriber);
List<String> items = List.of("1.25", "1.224", "1.55");
items.forEach(submissionPublisher::submit);
submissionPublisher.close();
}
}
И я просто вижу:
SUBSCRIBING
Почему метод onNext
не вызывается?