কম্পিউটার টিউটোরিয়াল

জাভাতে থ্রেড পুল (Thread Pools)

একটি থ্রেড পুল হলো পূর্ব-ইনিশিয়ালাইজড থ্রেডের একটি সংগ্রহ। থ্রেড পুলের পেছনের সাধারণ পরিকল্পনা হলো মেথড স্টার্টআপে বিভিন্ন ধরনের থ্রেড তৈরি করে সেগুলো একটি পুলে রাখা, যেখানে তারা কাজের জন্য অপেক্ষা করে। যখন একটি সার্ভার একটি অনুরোধ পায়, তখন এটি পুল থেকে একটি থ্রেড জাগায়—যদি উপলব্ধ থাকে—এবং সেটাকে সার্ভিসের জন্য অনুরোধটি পাস করে। একবার থ্রেড তার সার্ভিস সম্পন্ন করলে, এটি পুলে ফিরে আসে এবং আরও কাজের জন্য অপেক্ষা করে। যদি পুলে কোনো অ্যাক্সেসযোগ্য থ্রেড না থাকে, তবে সার্ভার অপেক্ষা করে যতক্ষণ না একটি ফ্রি হয়।

এটি সময় বাঁচায় কারণ নতুন থ্রেড তৈরি করার দরকার নেই।

এটি সার্ভলেট এবং JSP-এ ব্যবহৃত হয় যেখানে কন্টেইনার অনুরোধ প্রক্রিয়া করার জন্য একটি থ্রেড পুল তৈরি করে।

উদাহরণ

EmployeeThread.java

import java.util.concurrent.ExecutorService; 
import java.util.concurrent.Executors; 

class EmployeeThread implements Runnable { 
    private String message; 
    
    public EmployeeThread(String s) { 
        this.message = s; 
    } 
    
    public void run() { 
        System.out.println(Thread.currentThread().getName() + " (Start) message = " + message); 
        processmessage(); // processmessage মেথড কল করে যা থ্রেডকে ২ সেকেন্ড স্লিপ করায় 
        System.out.println(Thread.currentThread().getName() + " (End)"); // থ্রেডের নাম প্রিন্ট করে 
    } 
    
    private void processmessage() { 
        try { 
            Thread.sleep(1000); 
        } catch (InterruptedException e) { 
            e.printStackTrace(); 
        } 
    } 
}

ExampleThreadPool.java

public class implementThreadPool { 
    public static void main(String[] args) { 
        ExecutorService executor = Executors.newFixedThreadPool(6); // ৬ থ্রেডের একটি পুল তৈরি 
        
        for (int m = 0; m < 6; m++) { 
            Runnable worker = new EmployeeThread("" + m); 
            executor.execute(worker); // ExecutorService-এর execute মেথড কল 
        } 
        
        executor.shutdown(); 
        while (!executor.isTerminated()) { } 
        System.out.println("Finished all the threads"); 
    } 
}
  1. জাভাতে ইউজার থ্রেড এবং ডেমন থ্রেডের পার্থক্য

  2. জাভাতে join() মেথডের গুরুত্ব

  3. জাভাতে yield() মেথডের গুরুত্ব

  4. জাভাতে isDaemon() মেথডের গুরুত্ব