Concurrency উন্নত

কনকারেন্ট টাস্কগুলির (concurrent tasks) লাইফটাইমকে কাজের একটি একক ইউনিট (single unit of work) হিসেবে ম্যানেজ করুন।

✕ Java 8
ExecutorService exec =
    Executors.newFixedThreadPool(2);
Future<User> u = exec.submit(this::fetchUser);
Future<Order> o = exec.submit(this::fetchOrder);
try {
    return combine(u.get(), o.get());
} finally { exec.shutdown(); }
✓ Java 25 (Preview)
try (var scope = new StructuredTaskScope
        .ShutdownOnFailure()) {
    var u = scope.fork(this::fetchUser);
    var o = scope.fork(this::fetchOrder);
    scope.join().throwIfFailed();
    return combine(u.get(), o.get());
}
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
🛡️

কোনো থ্রেড লিক নেই

স্কোপ বন্ধ হওয়ার আগে সব ফর্কড টাস্ক (forked tasks) সম্পন্ন হয়।

দ্রুত ব্যর্থতা

ShutdownOnFailure মেথড কোনো একটি টাস্ক ব্যর্থ হলে বাকি sibling টাস্কগুলো বাতিল করে দেয়।

📐

পরিষ্কার কাঠামো

টাস্ক লাইফটাইম কোডের লেক্সিকাল স্কোপের (lexical scope) সাথে মিলে যায়।

পুরনো পদ্ধতি
ম্যানুয়াল থ্রেড লাইফসাইকেল
আধুনিক পদ্ধতি
StructuredTaskScope
JDK থেকে
25
কঠিনতা
উন্নত
স্ট্রাকচার্ড কনকারেন্সি (Structured Concurrency)
প্রিভিউ

JDK 25-এ পূর্বরূপ (পঞ্চম প্রিভিউ, JEP 505)। --enable-preview প্রয়োজন।

স্ট্রাকচার্ড কনকারেন্সি একদল কনকারেন্ট টাস্ককে একটি অপারেশন হিসেবে বিবেচনা করে। যদি কোনো সাবটাস্ক (subtask) ব্যর্থ হয়, তবে অন্যগুলো বাতিল (cancelled) হয়ে যায়। স্কোপ নিশ্চিত করে যে থ্রেড লিক (thread leaks) হবে না এবং সুস্পষ্ট প্যারেন্ট-চাইল্ড রিলেশনশিপ প্রদান করে।