Streams মধ্যম

সীমাহীন লাইটওয়েট কনকারেন্সির (lightweight concurrency) জন্য ভার্চুয়াল থ্রেড এক্সিকিউটর ব্যবহার করুন।

✕ Java 8
ExecutorService exec =
    Executors.newFixedThreadPool(10);
try {
    futures = tasks.stream()
        .map(t -> exec.submit(t))
        .toList();
} finally {
    exec.shutdown();
}
✓ Java 21+
try (var exec = Executors
        .newVirtualThreadPerTaskExecutor()) {
    var futures = tasks.stream()
        .map(exec::submit)
        .toList();
}
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
♾️

কোনো সাইজিং নেই

কোনো পুল সাইজ টিউন করার প্রয়োজন নেই – যতগুলো থ্রেড দরকার ততগুলো তৈরি করুন।

লাইটওয়েট

ভার্চুয়াল থ্রেডগুলো কিলোবাইট (KB) মেমরি ব্যবহার করে, মেগাবাইট (MB) নয়।

🧹

অটো-ক্লোজেবল (Auto-closeable)

ট্রাই-উইথ-রিসোর্সেস (try-with-resources) স্বয়ংক্রিয়ভাবে শাটডাউন হ্যান্ডেল করে।

পুরনো পদ্ধতি
ফিক্সড থ্রেড পুল (Fixed Thread Pool)
আধুনিক পদ্ধতি
ভার্চুয়াল থ্রেড এক্সিকিউটর
JDK থেকে
21
কঠিনতা
মধ্যম
ভার্চুয়াল থ্রেড এক্সিকিউটর (Virtual Thread Executor)
উপলব্ধ

JDK 21 LTS (সেপ্টেম্বর 2023) থেকে ব্যাপকভাবে উপলব্ধ

ভার্চুয়াল থ্রেড এক্সিকিউটর প্রতিটি টাস্কের জন্য একটি নতুন ভার্চুয়াল থ্রেড তৈরি করে। কোনো পুল সাইজিংয়ের (pool sizing) প্রয়োজন নেই – ভার্চুয়াল থ্রেডগুলো এত সস্তা যে লক্ষ লক্ষ তৈরি করা যায়।