Concurrency মধ্যম

শক্তিশালী শিডিউল করা কাজের জন্য Timer ও TimerTask-কে ScheduledExecutorService দিয়ে প্রতিস্থাপন করুন।

✕ Timer and TimerTask
Timer timer = new Timer("refresh-timer");
timer.scheduleAtFixedRate(new TimerTask() {
    @Override
    public void run() {
        refresh();
    }
}, 0, 60_000);
✓ ScheduledExecutorService
ScheduledExecutorService scheduler =
        Executors.newScheduledThreadPool(2);

scheduler.scheduleAtFixedRate(
        this::refresh, 0, 1, TimeUnit.MINUTES);
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
🧵

উন্নত বিচ্ছিন্নতা

কনফিগারযোগ্য থ্রেড পুল অসম্পর্কিত শিডিউলগুলোকে একটি ভঙ্গুর ওয়ার্কার ভাগ করা থেকে বিরত রাখে।

🛡

মজবুত এক্সিকিউশন

একটি ব্যর্থ টাস্ক শিডিউলারকে নিজেই বন্ধ করে দেয় না।

🎛

নিয়ন্ত্রণযোগ্য লাইফসাইকেল

Future, বাতিলকরণ, বিলম্ব এবং বন্ধ করা স্ট্যান্ডার্ড এক্সিকিউটর API ব্যবহার করে।

পুরনো পদ্ধতি
Timer ও TimerTask
আধুনিক পদ্ধতি
ScheduledExecutorService
JDK থেকে
5
কঠিনতা
মধ্যম
টাইমার টাস্ক থেকে শিডিউলড এক্সিকিউটরে
উপলব্ধ

JDK 5 (সেপ্টেম্বর ২০০৪) থেকে ব্যাপকভাবে উপলব্ধ

Timer প্রতিটি টাস্ক একটি মাত্র থ্রেডে চালায়, তাই একটি দীর্ঘসময় ধরে চলা টাস্ক অন্যগুলোকে বিলম্বিত করে, এবং একটি অনিয়ন্ত্রিত ব্যতিক্রম টাইমার থ্রেডকে বন্ধ করে দেয়। ScheduledExecutorService এক্সিকিউটর ফ্রেমওয়ার্ক ব্যবহার করে, একাধিক ওয়ার্কার সমর্থন করে, ScheduledFuture হ্যান্ডেল ফেরত দেয়, এবং স্পষ্ট লাইফসাইকেল ব্যবস্থাপনা প্রদান করে। মালিক কম্পোনেন্টকে আর প্রয়োজন না হলে শিডিউলার বন্ধ করে দিতে হবে।