Java
SubmissionPublisher
SubmissionPublisher ile veri yayını öğrenirsin.
SubmissionPublisher
SubmissionPublisher, JDK'nın hazır Publisher uygulamasıdır. Kendi Publisher sınıfını yazmadan asenkron akış oluşturmayı kolaylaştırır. submit ile öğe gönderilir, close ile akış kapatılır.
Örnek: SubmissionPublisher<String> pub = new SubmissionPublisher<>(). pub.subscribe(sub) ile abone eklenir, pub.submit("veri") ile öğe gönderilir. SubmissionPublisher öğeleri bir iş parçacığı havuzunda asenkron dağıtır. Bu yüzden akışın tamamlanmasını beklemek için close sonrası kısa bir bekleme gerekebilir.
Abone sayısını izleme
Bir SubmissionPublisher'a kaç abone eklendiği getNumberOfSubscribers ile öğrenilir. Bu, birden çok aboneyi yöneten sistemlerde yararlıdır. Ayrıca getSubscribers abone listesini verir.
Örnek: pub.subscribe(a); pub.subscribe(b); sonrası pub.getNumberOfSubscribers() iki döner. Bu değer, abonelikten çıkma işleminden sonra azalır. Böylece yayıncının o anki abone sayısını senkron olarak izlemek mümkündür.
Uygulama Abone sayısını yazdır
Bir EmptySubscriber sınıfı tanımla: Subscriber<String> arayüzünü uygulasın (yöntemler boş kalsın, onSubscribe request(1) yapsın). main içinde new SubmissionPublisher<String>() oluştur, bir EmptySubscriber abone ekle ve getNumberOfSubscribers sonucunu System.out.println ile yazdır. Sonra pub.close() ile kapat.
Örnek çözümü göster
import java.util.concurrent.SubmissionPublisher;
import java.util.concurrent.Flow.*;
class EmptySubscriber implements Subscriber<String> {
public void onSubscribe(Subscription s) { s.request(1); }
public void onNext(String v) { }
public void onError(Throwable t) { }
public void onComplete() { }
}
public class SubmissionDemo {
public static void main(String[] args) {
SubmissionPublisher<String> pub = new SubmissionPublisher<>();
pub.subscribe(new EmptySubscriber());
System.out.println(pub.getNumberOfSubscribers());
pub.close();
}
}
Kendini test et
-
SubmissionPublisher oluştur
SubmissionPublisher<String> pub = ____<>();
Cevabı göster
SubmissionPublisher<String> pub = new SubmissionPublisher<>();
-
SubmissionPublisher yöntemlerini eşleştir
- SubmissionPublisher
- Hazır Publisher
- submit
- Öğe gönderir
- subscribe
- Abone ekler
- close
- Akışı kapatır
-
SubmissionPublisher neyi kolaylaştırır?
- Dosya okuma
- Publisher oluşturma
- Dizgi kodlama
- Yol işlemleri
Cevabı göster
Publisher oluşturma — SubmissionPublisher hazır bir Publisher uygulamasıdır.
Sıradaki ders: Backpressure