IO, Computation, এবং New Thread Scheduler

Schedulers এবং Concurrency - আরএক্সজাভা (RxJava) - Java Technologies

272

RxJava-তে Schedulers হলো থ্রেড ম্যানেজমেন্টের জন্য ব্যবহৃত একটি উপাদান। এটি নির্ধারণ করে যে কোন থ্রেডে কাজটি সম্পন্ন হবে।

RxJava-তে সাধারণত তিনটি গুরুত্বপূর্ণ Scheduler রয়েছে:

  1. IO Scheduler
  2. Computation Scheduler
  3. New Thread Scheduler

এগুলো বিভিন্ন ধরণের অ্যাসিঙ্ক্রোনাস কাজ করার জন্য ব্যবহৃত হয়।


1. IO Scheduler

  • উপযুক্ত কাজ:
    এটি I/O সম্পর্কিত কাজ যেমন ডেটাবেস কল, REST API রিকোয়েস্ট, ফাইল অপারেশন, বা নেটওয়ার্ক রিকোয়েস্ট-এর জন্য উপযুক্ত।
  • বিশেষ বৈশিষ্ট্য:
    • এটি একটি thread pool ব্যবহার করে।
    • প্রতিটি কাজের জন্য আলাদা থ্রেড বরাদ্দ করে।
    • থ্রেড পুনঃব্যবহার করতে সক্ষম।
  • ব্যবহার:
    Schedulers.io()

উদাহরণ:

Observable.fromCallable(() -> {
    // কোনো I/O কাজ (যেমন ফাইল পড়া বা API কল)
    Thread.sleep(1000); // Simulating delay
    return "Data fetched from API";
})
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.single())
.subscribe(System.out::println);

2. Computation Scheduler

  • উপযুক্ত কাজ:
    CPU-ইনটেনসিভ কাজ যেমন ডেটা প্রসেসিং, অ্যালগরিদম চালনা, বা হিসাব-সংক্রান্ত কাজের জন্য।
  • বিশেষ বৈশিষ্ট্য:
    • এটি একটি fixed-size thread pool ব্যবহার করে।
    • থ্রেড সংখ্যা ডিভাইসের CPU কোরের সমান।
    • এটি I/O সম্পর্কিত কাজের জন্য নয়।
  • ব্যবহার:
    Schedulers.computation()

উদাহরণ:

Observable.range(1, 10)
    .map(i -> {
        System.out.println("Processing on: " + Thread.currentThread().getName());
        return i * 2; // Computational task
    })
    .subscribeOn(Schedulers.computation())
    .observeOn(Schedulers.single())
    .subscribe(result -> System.out.println("Received: " + result));

3. New Thread Scheduler

  • উপযুক্ত কাজ:
    যখন প্রতিবার একটি নতুন থ্রেড তৈরি করা প্রয়োজন, যেমন স্বতন্ত্র কাজ যেখানে থ্রেড পুনঃব্যবহার করা ঠিক নয়।
  • বিশেষ বৈশিষ্ট্য:
    • এটি প্রতিটি কাজের জন্য একটি নতুন থ্রেড তৈরি করে।
    • এটি অনেক বেশি থ্রেড তৈরি করে, যা অতিরিক্ত ব্যয়বহুল হতে পারে।
  • ব্যবহার:
    Schedulers.newThread()

উদাহরণ:

Observable.create(emitter -> {
    emitter.onNext("Task started");
    Thread.sleep(500);
    emitter.onNext("Task completed");
    emitter.onComplete();
})
.subscribeOn(Schedulers.newThread())
.observeOn(Schedulers.single())
.subscribe(System.out::println);

Schedulers-এর সংমিশ্রণ

RxJava-তে আপনি সাধারণত দুটি Scheduler ব্যবহার করেন:

  1. subscribeOn(Scheduler):
    কোন Scheduler-এ Observable কাজ করবে তা নির্ধারণ করে।
  2. observeOn(Scheduler):
    কোন Scheduler-এ Observer কাজ করবে তা নির্ধারণ করে।

উদাহরণ:

Observable.just("Task")
    .subscribeOn(Schedulers.io())      // কাজ I/O থ্রেডে সম্পন্ন হবে
    .observeOn(Schedulers.computation()) // রেজাল্ট computation থ্রেডে প্রসেস হবে
    .subscribe(result -> System.out.println("Received on: " + Thread.currentThread().getName()));

তুলনামূলক বিশ্লেষণ

Schedulerব্যবহারযোগ্যতাথ্রেড ব্যবস্থাপনাউদাহরণ কাজ
IO SchedulerI/O সম্পর্কিত কাজথ্রেড পুল, থ্রেড পুনঃব্যবহারREST API, ফাইল পড়া বা লেখা
Computation SchedulerCPU-ইনটেনসিভ কাজFixed-size (CPU cores অনুযায়ী)ডেটা প্রসেসিং, অ্যালগরিদম চালনা
New Thread Schedulerস্বতন্ত্র নতুন থ্রেড প্রয়োজনপ্রতিবার নতুন থ্রেড তৈরিনির্দিষ্ট স্বতন্ত্র কাজ

প্রধান বিষয়:

  1. IO Scheduler: অধিকাংশ অ্যাসিঙ্ক্রোনাস কাজের জন্য আদর্শ।
  2. Computation Scheduler: CPU-নির্ভর কাজের জন্য সেরা।
  3. New Thread Scheduler: বিশেষ পরিস্থিতিতে স্বতন্ত্র নতুন থ্রেড প্রয়োজন হলে ব্যবহার করুন।

Schedulers নির্বাচন করার সময় কাজের ধরন এবং পারফরম্যান্স প্রয়োজনীয়তা বিবেচনা করুন।

Content added By
Promotion

Are you sure to start over?

Loading...