কম্পিউটার

ফিক্সড থ্রেড পুল এবং ক্যাশেড থ্রেড পুলের মধ্যে পার্থক্য।


এক্সিকিউটর ফ্রেমওয়ার্ক থ্রেড পুল ধারণা ব্যবহার করে ডিজাইন করা হয়েছে। থ্রেড পুল হল বর্তমান কাজটি সম্পাদন করার জন্য প্রতিবার একটি নতুন থ্রেড তৈরি করার পরিবর্তে ইতিমধ্যে তৈরি করা থ্রেড পুনরায় ব্যবহার করার উপায়৷

এক্সিকিউটর ক্লাস থ্রেড পুল তৈরি করার জন্য একটি কারখানা পদ্ধতি প্রদান করে। ThreadPoolExecutor ক্লাস হল এক্সিকিউটরদের জন্য বেস ইমপ্লিমেন্টেশন যা অনেক এক্সিকিউটর ফ্যাক্টরি পদ্ধতি থেকে ফিরে আসে।

Sr. না। কী স্থির থ্রেড পুল ক্যাশড থ্রেড পুল
1
বেসিক
জাভা ডক অনুযায়ী -
একটি থ্রেড পুল তৈরি করে যা একটি নির্দিষ্ট সংখ্যক থ্রেডকে পুনরায় ব্যবহার করে যা একটি শেয়ার্ড আনবাউন্ডেড কিউ বন্ধ করে। যেকোনো সময়ে, বেশিরভাগ nThreads থ্রেড সক্রিয় প্রক্রিয়াকরণ কাজ হবে। সমস্ত থ্রেড সক্রিয় থাকাকালীন অতিরিক্ত কাজ জমা দেওয়া হলে, একটি থ্রেড উপলব্ধ না হওয়া পর্যন্ত তারা সারিতে অপেক্ষা করবে। শাটডাউনের আগে কার্যকর করার সময় ব্যর্থতার কারণে কোনো থ্রেড বন্ধ হয়ে গেলে, পরবর্তী কাজগুলি চালানোর প্রয়োজন হলে একটি নতুন থ্রেড তার জায়গা নেবে। এটি স্পষ্টভাবে বন্ধ না হওয়া পর্যন্ত পুলের থ্রেডগুলি বিদ্যমান থাকবে৷
জাভা ডক অনুযায়ী -
একটি থ্রেড পুল তৈরি করে যা প্রয়োজন অনুসারে নতুন থ্রেড তৈরি করে, কিন্তু পূর্বে নির্মিত থ্রেডগুলি উপলব্ধ হলে পুনরায় ব্যবহার করবে। এই পুলগুলি সাধারণত এমন প্রোগ্রামগুলির কর্মক্ষমতা উন্নত করবে যা অনেকগুলি স্বল্পস্থায়ী অ্যাসিঙ্ক্রোনাস কাজগুলি সম্পাদন করে। কার্যকর করার জন্য কলগুলি উপলব্ধ হলে পূর্বে নির্মিত থ্রেডগুলি পুনরায় ব্যবহার করবে৷ কোনো বিদ্যমান থ্রেড উপলব্ধ না হলে, একটি নতুন থ্রেড তৈরি করা হবে এবং পুলে যোগ করা হবে।
2
সারি
এটি ব্লকিং কিউ ব্যবহার করে।


এটি সিঙ্ক্রোনাস সারি ব্যবহার করে
কিউ .


3
থ্রেড লাইফটাইম
এটি সমস্ত থ্রেডগুলিকে সুস্পষ্টভাবে বন্ধ না করা পর্যন্ত চলমান রাখবে৷
যে থ্রেডগুলি ষাট সেকেন্ডের জন্য ব্যবহার করা হয়নি তা বন্ধ করা হয় এবং ক্যাশে থেকে সরানো হয়
4.
থ্রেড পুলের আকার
থ্রেড পুলের আকার ঠিক করা হয়েছে তাই এটি বাড়বে না।
থ্রেড পুল শূন্য থ্রেড থেকে পূর্ণসংখ্যা পর্যন্ত বৃদ্ধি পেতে পারে। MAX_VALUE
5.
কেস ব্যবহার করুন৷
আমাদের ফিক্সড থ্রেডপুল ব্যবহার করা উচিত, যখন আমরা একযোগে কাজ সীমিত করতে চাই
যখন আপনার কাছে অনেকগুলি অনুমানযোগ্য কাজ থাকে তখন এটি ব্যবহার করা যেতে পারে।

স্থির থ্রেড পুলের উদাহরণ

public class Main {
   public static void main(String args[]) throws InterruptedException {
      ExecutorService executors = Executors.newFixedThreadPool(4);
      CountDownLatch latch= new CountDownLatch(2);
      executors.submit(new Service1(latch));
      executors.submit(new Service2(latch));
      latch.await();
      System.out.println("Done");
   }

import java.util.concurrent.CountDownLatch;
public class Service1 implements Runnable {
   CountDownLatch latch;
   public Service1(CountDownLatch latch) {
      super();
      this.latch = latch;
   }
   @Override
   public void run() {
      try {
         Thread.sleep(20000);
      } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
         }
         latch.countDown();
         System.out.println("Services2"+latch.getCount());
      }
   }
   import java.util.concurrent.CountDownLatch;
   public class Service2 implements Runnable {
      CountDownLatch latch;
      public Service2(CountDownLatch latch) {
         super();
         this.latch = latch;
      }
      @Override
      public void run() {
         try {
            Thread.sleep(20000);
         } catch (InterruptedException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   latch.countDown();
   System.out.println("Services2"+latch.getCount());
   }
}

  1. জাভাতে তালিকা এবং সেটের মধ্যে পার্থক্য

  2. জাভাতে অপেক্ষা এবং ঘুমের মধ্যে পার্থক্য

  3. জাভাতে থ্রেড এবং রানেবলের মধ্যে পার্থক্য

  4. জাভাতে ব্যতিক্রম এবং ত্রুটির মধ্যে পার্থক্য