Rumah  >  Artikel  >  Java  >  Bagaimanakah kita melaksanakan antara muka Pelanggan dalam Java 9?

Bagaimanakah kita melaksanakan antara muka Pelanggan dalam Java 9?

WBOY
WBOYke hadapan
2023-09-04 13:33:07783semak imbas

在Java 9中,我们如何实现Subscriber接口?

Java 9 menyokong penciptaan strim reaktif dengan memperkenalkan beberapa antara muka:🎜 🎜🎜#Penerbit, Pelanggan, Langganan dan laksanakan Penerbit ## #antaramuka🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜# baik hati. Setiap antara muka boleh memainkan peranan yang berbeza mengikut prinsip Aliran Reaktif. Kami boleh menggunakan antara muka Subscriber untuk melanggan data yang diterbitkan oleh publisher

. Kami perlu melaksanakan antara muka

Subscriber dan menyediakan pelaksanaan untuk kaedah abstrak. Kaedah Aliran.Antara muka pelanggan:

onComplete():

Kaedah ini dipanggil apabila objek Penerbitnya selesai peranan.

  • onError(): Kaedah ini dipanggil apabila Penerbit menghadapi masalah dan memberitahu Pelanggan.
  • onNext(): Kaedah ini dipanggil apabila Penerbit mempunyai maklumat baharu untuk memberitahu semua Pelanggan.
  • onSubscribe(): Kaedah ini dipanggil apabila Penerbit menambah Pelanggan.
  • Contoh
    import java.util.concurrent.Flow;
    import java.util.concurrent.SubmissionPublisher;
    import java.util.stream.IntStream;
    
    public class SubscriberImplTest {
       public static class Subscriber implements <strong>Flow.Subscriber<Integer></strong> {
          private <strong>Flow.Subscription</strong> subscription;
          private boolean isDone;
          
         <strong> @Override</strong>
          public void <strong>onSubscribe</strong>(Flow.Subscription subscription) {
             System.out.println("Subscribed");
             this.subscription = subscription;
             this.subscription.request(1);
          }
          <strong>@Override</strong>
          public void <strong>onNext</strong>(Integer item) {
             System.out.println("Processing " + item);
             this.subscription.request(1);
          }
          <strong>@Override</strong>
          public void <strong>onError</strong>(Throwable throwable) {
             throwable.printStackTrace();
          }
          <strong>@Override</strong>
          public void <strong>onComplete()</strong> {
             System.out.println("Processing done");
             isDone = true;
          }
       }
       public static void main(String args[]) throws InterruptedException {
          <strong>SubmissionPublisher<Integer></strong> publisher = new <strong>SubmissionPublisher<></strong><strong>()</strong>;
          <strong>Subscriber </strong>subscriber = new <strong>Subscriber()</strong>;
          publisher.subscribe(subscriber);
          <strong>IntStream</strong> intData = <strong>IntStream.rangeClosed</strong>(1, 10);
          intData.forEach(<strong>publisher::submit</strong>);
          publisher.<strong>close()</strong>;
          while(!subscriber.isDone) {
             Thread.sleep(10);
          }
          System.out.println("Done");
       }
    }
    Output
  • <strong>Subscribed
    Processing 1
    Processing 2
    Processing 3
    Processing 4
    Processing 5
    Processing 6
    Processing 7
    Processing 8
    Processing 9
    Processing 10
    Processing done
    Done</strong>

Atas ialah kandungan terperinci Bagaimanakah kita melaksanakan antara muka Pelanggan dalam Java 9?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam