কম্পিউটার

কিভাবে আমরা জাভা 9 এ সাবস্ক্রাইবার ইন্টারফেস বাস্তবায়ন করতে পারি?


জাভা 9 প্রতিক্রিয়াশীল স্ট্রীম তৈরি করতে সমর্থন করে কয়েকটি ইন্টারফেস প্রবর্তন করে:প্রকাশক , সাবস্ক্রাইবার , সদস্যতা , এবং জমা প্রকাশক ক্লাস যা প্রকাশক বাস্তবায়ন করে ইন্টারফেস. প্রতিটি ইন্টারফেস প্রতিক্রিয়াশীল নীতির সাথে সঙ্গতিপূর্ণ একটি ভিন্ন ভূমিকা পালন করতে পারে স্ট্রিমগুলি৷ .

আমরা সাবস্ক্রাইবার ব্যবহার করতে পারি৷ একটি প্রকাশক দ্বারা প্রকাশিত ডেটাতে সদস্যতা নেওয়ার ইন্টারফেস৷ . আমাদের সাবস্ক্রাইবার বাস্তবায়ন করতে হবে ইন্টারফেস এবং বিমূর্ত পদ্ধতির জন্য একটি বাস্তবায়ন প্রদান করে।

ফ্লো। সাবস্ক্রাইবার ইন্টারফেস পদ্ধতি:

  • oncomplete(): যখন প্রকাশক বস্তুটি তার ভূমিকা সম্পূর্ণ করে তখন এই পদ্ধতিটি বলা হয়৷
  • onError(): যখন প্রকাশকের মধ্যে কিছু ভুল হয়ে যায় এবং গ্রাহককে অবহিত করা হয় তখন এই পদ্ধতিটি বলা হয়৷
  • Next(): যখনই প্রকাশকের কাছে সমস্ত গ্রাহকদের অবহিত করার জন্য নতুন তথ্য থাকে তখন এই পদ্ধতিটি বলা হয়৷
  • অনসাবস্ক্রাইব(): যখন প্রকাশক গ্রাহক যোগ করে তখন এই পদ্ধতিটি বলা হয়৷

উদাহরণ

import java.util.concurrent.Flow;
import java.util.concurrent.SubmissionPublisher;
import java.util.stream.IntStream;

public class SubscriberImplTest {
   public static class Subscriber implements Flow.Subscriber<Integer> {
      private Flow.Subscription subscription;
      private boolean isDone;
      
      @Override
      public void onSubscribe(Flow.Subscription subscription) {
         System.out.println("Subscribed");
         this.subscription = subscription;
         this.subscription.request(1);
      }
      @Override
      public void onNext(Integer item) {
         System.out.println("Processing " + item);
         this.subscription.request(1);
      }
      @Override
      public void onError(Throwable throwable) {
         throwable.printStackTrace();
      }
      @Override
      public void onComplete() {
         System.out.println("Processing done");
         isDone = true;
      }
   }
   public static void main(String args[]) throws InterruptedException {
      SubmissionPublisher<Integer> publisher = new SubmissionPublisher<>();
      Subscriber subscriber = new Subscriber();
      publisher.subscribe(subscriber);
      IntStream intData = IntStream.rangeClosed(1, 10);
      intData.forEach(publisher::submit);
      publisher.close();
      while(!subscriber.isDone) {
         Thread.sleep(10);
      }
      System.out.println("Done");
   }
}

আউটপুট

Subscribed
Processing 1
Processing 2
Processing 3
Processing 4
Processing 5
Processing 6
Processing 7
Processing 8
Processing 9
Processing 10
Processing done
Done

  1. কিভাবে আমরা জাভাতে একটি সম্পাদনাযোগ্য JLabel বাস্তবায়ন করতে পারি?

  2. কিভাবে আমরা জাভাতে একটি JPanel এর paintComponent() পদ্ধতি প্রয়োগ করতে পারি?

  3. জাভাতে বর্ডারফ্যাক্টরি ব্যবহার করে আমরা কীভাবে বিভিন্ন সীমানা প্রয়োগ করতে পারি?

  4. কিভাবে আমরা জাভাতে একটি JToggleButton বাস্তবায়ন করতে পারি?