FixedThreadPool এবং CachedThreadPool হল Java Concurrency এর ExecutorService ইন্টারফেসের দুটি গুরুত্বপূর্ণ থ্রেড পুল। এগুলো থ্রেড ম্যানেজমেন্ট আরও কার্যকর করতে ব্যবহৃত হয়।
১. FixedThreadPool
FixedThreadPool একটি নির্দিষ্ট সংখ্যক থ্রেড নিয়ে কাজ করে।
- এটি আগে থেকে নির্ধারিত থ্রেড সংখ্যা পর্যন্ত কাজ করতে পারে।
- নতুন টাস্ক এলে, বিদ্যমান থ্রেডগুলো ব্যস্ত থাকলে টাস্কগুলো একটি কিউতে অপেক্ষা করে।
উদাহরণ:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class FixedThreadPoolExample {
public static void main(String[] args) {
// ১. FixedThreadPool তৈরি (3 থ্রেড)
ExecutorService executor = Executors.newFixedThreadPool(3);
for (int i = 1; i <= 10; i++) {
final int taskId = i;
executor.execute(() -> {
System.out.println("Task " + taskId + " is running on thread " + Thread.currentThread().getName());
try {
Thread.sleep(2000); // প্রতিটি টাস্ক ২ সেকেন্ড সময় নেয়
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
});
}
// ExecutorService বন্ধ করুন
executor.shutdown();
}
}
আউটপুট:
- এক সময়ে সর্বোচ্চ ৩টি টাস্ক চলবে।
- নতুন টাস্কগুলো কিউতে অপেক্ষা করবে, যতক্ষণ না বিদ্যমান থ্রেড ফ্রি হয়।
২. CachedThreadPool
CachedThreadPool এর থ্রেড সংখ্যা ডায়নামিক।
- যখন একটি নতুন টাস্ক আসে, এটি বিদ্যমান থ্রেড ব্যবহার করে; যদি না থাকে, নতুন থ্রেড তৈরি করে।
- অব্যবহৃত থ্রেডগুলো একটি নির্দিষ্ট সময় পরে ধ্বংস হয়ে যায় (ডিফল্ট: ৬০ সেকেন্ড)।
উদাহরণ:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class CachedThreadPoolExample {
public static void main(String[] args) {
// ১. CachedThreadPool তৈরি
ExecutorService executor = Executors.newCachedThreadPool();
for (int i = 1; i <= 10; i++) {
final int taskId = i;
executor.execute(() -> {
System.out.println("Task " + taskId + " is running on thread " + Thread.currentThread().getName());
try {
Thread.sleep(2000); // প্রতিটি টাস্ক ২ সেকেন্ড সময় নেয়
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
});
}
// ExecutorService বন্ধ করুন
executor.shutdown();
}
}
আউটপুট:
- একই সময়ে যত প্রয়োজন, তত থ্রেড তৈরি হবে।
- কম টাস্ক থাকলে বিদ্যমান থ্রেড পুনরায় ব্যবহার হবে।
FixedThreadPool এবং CachedThreadPool এর তুলনা
| প্যারামিটার | FixedThreadPool | CachedThreadPool |
|---|---|---|
| থ্রেড সংখ্যা | নির্দিষ্ট (Fixed) | ডায়নামিক (প্রয়োজন অনুযায়ী তৈরি এবং ধ্বংস) |
| কর্মক্ষমতা (Performance) | কম টাস্ক থাকলে দ্রুত এবং নিয়ন্ত্রিত | বেশি টাস্কে দ্রুত (প্রচুর থ্রেড তৈরি হতে পারে) |
| রিসোর্স ব্যবহারে নিয়ন্ত্রণ | থ্রেড সংখ্যা নিয়ন্ত্রিত | রিসোর্স বেশি ব্যবহৃত হতে পারে |
| ব্যবহার ক্ষেত্র | সীমিত এবং পূর্ব নির্ধারিত টাস্ক | ডায়নামিক এবং অপ্রত্যাশিত টাস্ক |
FixedThreadPoolব্যবহার করুন, যদি থ্রেড সংখ্যা পূর্বনির্ধারিত থাকে এবং সিস্টেম রিসোর্স নিয়ন্ত্রণে রাখতে চান।CachedThreadPoolব্যবহার করুন, যদি টাস্ক সংখ্যা ডায়নামিক হয় এবং দ্রুত থ্রেড তৈরি করার প্রয়োজন হয়।
এই উদাহরণগুলো দেখে আপনি FixedThreadPool এবং CachedThreadPool এর কাজ এবং তাদের মধ্যে পার্থক্য বুঝতে পারবেন।
Content added By
Read more