SubmissionPublisher
- Java kursu
- Uzman
- Ders 21/46
- 5 dk
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.
Başlangıç kodu
// SubmissionPublisher oluştur
// bir abone ekle
// abone sayısını yazdırÖrnek çözüm
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();
}
}Beklenen çıktı
1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 SubmissionPublisher oluştur
SubmissionPublisher<String> pub = ____<>();
SubmissionPublisher<String> pub = new SubmissionPublisher<>();
Açıklama: new SubmissionPublisher hazır bir yayıncıdır.
2 SubmissionPublisher yöntemlerini eşleştir
| Kavram | Anlamı |
|---|---|
SubmissionPublisher |
Hazır Publisher |
submit |
Öğe gönderir |
subscribe |
Abone ekler |
close |
Akışı kapatır |
3 SubmissionPublisher neyi kolaylaştırır?
- Dosya okuma
- Publisher oluşturma Doğru cevap
- Dizgi kodlama
- Yol işlemleri
Açıklama: SubmissionPublisher hazır bir Publisher uygulamasıdır.