ExecutorService অটো-ক্লোজ (Auto-Close)
অটোমেটিক এক্সিকিউটর শাটডাউনের জন্য ট্রাই-উইথ-রিসোর্স ব্যবহার করুন।
কোড তুলনা
✕ Java 8
ExecutorService exec =
Executors.newCachedThreadPool();
try {
exec.submit(task);
} finally {
exec.shutdown();
exec.awaitTermination(
1, TimeUnit.MINUTES);
}
✓ Java 19+
try (var exec =
Executors.newCachedThreadPool()) {
exec.submit(task);
}
// auto shutdown + await on close
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
অটো ক্লিনআপ (Auto Cleanup)
ব্লক থেকে বের হওয়ার সাথে সাথেই শাটডাউন স্বয়ংক্রিয়ভাবে সম্পন্ন হয়।
কোনো রিসোর্স লিক নেই
ব্যতিক্রম (exceptions) ঘটলেও এক্সিকিউটর সবসময় শাটডাউন হয়।
পরিচিত প্যাটার্ন
ফাইল, কানেকশন ইত্যাদির জন্য ব্যবহৃত ট্রাই-উইথ-রিসোর্স প্যাটার্নের মতোই।
পুরনো পদ্ধতি
ম্যানুয়াল শাটডাউন
আধুনিক পদ্ধতি
ট্রাই-উইথ-রিসোর্স (try-with-resources)
JDK থেকে
19
কঠিনতা
প্রাথমিক
JDK সমর্থন
ExecutorService অটো-ক্লোজ (Auto-Close)
উপলব্ধ
JDK 19 (সেপ্টেম্বর 2022) থেকে ব্যাপকভাবে উপলব্ধ
কীভাবে কাজ করে
জাভা 19 থেকে, ExecutorService AutoCloseable ইন্টারফেস ইমপ্লিমেন্ট করে। close() মেথডটি shutdown() মেথড কল করে এবং টাস্কগুলো শেষ হওয়ার জন্য অপেক্ষা করে। এর ফলে ম্যানুয়াল try/finally শাটডাউন প্যাটার্নের আর প্রয়োজন নেই।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ