Tôi đã chơi với Java Flow offer
toán tử nhưng sau khi đọc tài liệu và làm bài kiểm tra của tôi, tôi không hiểu.Java 9 Hành vi của luồng gửi Phương pháp cung cấp nhà xuất bản
đây thử nghiệm của tôi
@Test
public void offer() throws InterruptedException {
//Create Publisher for expected items Strings
SubmissionPublisher<String> publisher = new SubmissionPublisher<>();
//Register Subscriber
publisher.subscribe(new CustomSubscriber<>());
publisher.subscribe(new CustomSubscriber<>());
publisher.subscribe(new CustomSubscriber<>());
publisher.offer("item", (subscriber, value) -> false);
Thread.sleep(500);
}
Nhà điều hành đề nghị nhận được một item được phát ra và một hàm BiPredicate, và như xa như tôi hiểu đọc tài liệu hướng dẫn, chỉ trong trường hợp đó các chức năng làm vị là đúng mục nó sẽ được phát ra.
Bur sau khi vượt qua bài kiểm tra kết quả là
Subscription done:
Subscription done:
Subscription done:
Got : item --> onNext() callback
Got : item --> onNext() callback
Got : item --> onNext() callback
There's không thay đổi kết quả nếu thay vì sai tôi trở thành sự thật.
Bất kỳ ai cũng có thể giải thích cho tôi điều này tốt hơn một chút.
Tôi có thể câm, nhưng sau khi sửa đổi thử nghiệm của tôi và đọc lại doc vẫn không nhận được nó. Bạn có nghĩ rằng bạn có thể xây dựng một ví dụ rất đơn giản ?. Đừng lo lắng nếu bạn không thể tôi sẽ tìm ra. – paul
Như tài liệu hướng dẫn cho biết "Mục này có thể bị giảm bởi một hoặc nhiều người đăng ký" Làm thế nào tôi có thể tái tạo hành vi đó ?. Tôi chỉ cố gắng trong lần đầu tiên onNext và trong onSubscribe lần đầu tiên, chỉ cần thực hiện một subscription.cancel() nhưng vẫn không thấy bất kỳ thay đổi trong kết quả – paul
@paul Tôi cũng quan tâm đến một ví dụ như vậy (thử ngay bây giờ) . Sẽ cập nhật câu trả lời nếu tôi nghĩ ra. – manouti