কম্পিউটার

জাভা 9 এ ফ্লো এপিআই ব্যবহার করে প্রতিক্রিয়াশীল স্ট্রিমগুলি কীভাবে বাস্তবায়ন করবেন?


ফ্লো API৷ জাভা 9 থেকে প্রতিক্রিয়াশীল স্ট্রীম স্পেসিফিকেশনের জন্য অফিসিয়াল সমর্থন। এটি উভয় ইটারেটর এর সংমিশ্রণ এবং পর্যবেক্ষক নিদর্শন ফ্লো API এটি একটি ইন্টারঅপারেশন স্পেসিফিকেশন এবং RxJava এর মত একটি এন্ড-ইউজার API নয় .

ফ্লো API৷ চারটি মৌলিক ইন্টারফেস নিয়ে গঠিত:

  • সাবস্ক্রাইবার : গ্রাহক কলব্যাকের জন্য প্রকাশকের সাবস্ক্রাইব করে।
  • প্রকাশক: প্রকাশক নিবন্ধিত গ্রাহকদের কাছে ডেটা আইটেমগুলির স্ট্রিম প্রকাশ করে৷
  • সাবস্ক্রিপশন : প্রকাশক এবং গ্রাহকের মধ্যে লিঙ্ক।
  • প্রসেসর : প্রসেসরটি প্রকাশক এবং গ্রাহকের মধ্যে বসে এবং একটি স্ট্রীমকে অন্যটিতে রূপান্তরিত করে৷

নীচের উদাহরণে, আমরা একটি মৌলিক গ্রাহক তৈরি করেছি যা একটি ডেটা অবজেক্টের জন্য জিজ্ঞাসা করে, এটি প্রিন্ট করে এবং আরও একটির জন্য জিজ্ঞাসা করে। আমরা Java (SubmissionPublisher দ্বারা প্রদত্ত একটি প্রকাশক বাস্তবায়ন ব্যবহার করতে পারি৷ ) আমাদের সেশন সম্পূর্ণ করতে।

উদাহরণ

import java.util.concurrent.Flow;
import java.util.List;
import java.util.concurrent.SubmissionPublisher;

class MySubscriber<T>implements Flow.Subscriber<T> {
   private Flow.Subscription subscription;
   @Override
   public void onSubscribe(Flow.Subscription subscription) {
      this.subscription = subscription;
      this.subscription.request(1);
   }
   @Override
   public void onNext(T item) {
      System.out.println(item);
      subscription.request(1);
   }
   @Override
   public void onError(Throwable throwable) {
      throwable.printStackTrace();
   }
   @Override
   public void onComplete() {
      System.out.println("Done");
   }
}

// main class
public class FlowTest {
   public static void main(String args[]) {
      List<String> items = List.of("1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
      SubmissionPublisher<String> publisher = new SubmissionPublisher<>();
      publisher.subscribe(new MySubscriber<>());
      items.forEach(s -> {
         try {
            Thread.sleep(1000);
         } catch (InterruptedException e) {
            e.printStackTrace();
         }
         publisher.submit(s);
      });
      publisher.close();
   }
}

আউটপুট

1
2
3
4
5
6
7
8
9
10
Done

  1. কীভাবে জাভা ব্যবহার করে ওপেনসিভিতে দ্বিপাক্ষিক অস্পষ্টতা প্রয়োগ করবেন?

  2. জাভা ব্যবহার করে ওপেনসিভিতে গাউসিয়ান ব্লার কীভাবে প্রয়োগ করবেন?

  3. কীভাবে জাভা ব্যবহার করে ওপেনসিভিতে ব্লার (গড়) প্রয়োগ করবেন?

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