Java Technologies Timer ব্যবহার করে Task Scheduling গাইড ও নোট

322

java.util.Timer ক্লাসটি Java-তে নির্দিষ্ট সময়ের পরে বা নির্দিষ্ট সময় অন্তর কোনো কাজ সম্পাদন করতে ব্যবহৃত হয়। এটি task scheduling এর জন্য ব্যবহৃত হয়, যেখানে নির্দিষ্ট সময়ের পরে একটি টাস্ক চালানো হয় অথবা নিয়মিত সময় অন্তর একটি টাস্ক চালানো হয়।

Timer ক্লাসটি TimerTask অবজেক্টগুলোকে পরিচালনা করে এবং এক বা একাধিক টাস্ক নির্দিষ্ট সময় বা নির্দিষ্ট সময় অন্তর চালাতে পারে। Timer ক্লাসটি single-threaded হয়ে থাকে, অর্থাৎ এটি এক সময় একটি কাজই চালাতে পারে। তবে আপনি যদি অনেক টাস্ক একসাথে চালাতে চান, তাহলে ScheduledExecutorService ব্যবহার করা ভালো, যা মাল্টি-থ্রেডিং সমর্থন করে।

Timer এবং TimerTask ক্লাসের প্রধান বৈশিষ্ট্য:

  1. Timer: এই ক্লাসটি টাস্কগুলি schedule করতে ব্যবহৃত হয় এবং এগুলি নির্দিষ্ট সময়ের পরে বা নির্দিষ্ট সময় অন্তর চালানোর জন্য ব্যবহৃত হয়।
    • schedule() মেথডটি টাস্কটি নির্দিষ্ট সময়ের পরে বা নির্দিষ্ট ইন্টারভ্যাল দিয়ে চালানোর জন্য ব্যবহার করা হয়।
    • cancel() মেথডটি সমস্ত টাস্ক বাতিল করার জন্য ব্যবহৃত হয়।
  2. TimerTask: এটি একটি অ্যাবস্ট্রাক্ট ক্লাস যা আপনি ব্যবহার করে টাস্ক তৈরি করেন যা Timer দ্বারা সময় নির্ধারণ করা হবে। এর মধ্যে run() মেথডটি টাস্কের কার্যক্রম নির্ধারণ করে।

Timer এবং TimerTask এর সাথে Task Scheduling

1. Task Scheduling with schedule()

schedule() মেথড ব্যবহার করে আপনি টাস্ককে নির্দিষ্ট সময়ের পরে চালাতে পারেন। উদাহরণস্বরূপ, 5 সেকেন্ড পর একটি টাস্ক চালানো।

import java.util.Timer;
import java.util.TimerTask;

public class TimerExample {
    public static void main(String[] args) {
        // Timer object তৈরি
        Timer timer = new Timer();

        // TimerTask তৈরি করা
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                System.out.println("Task executed after 5 seconds");
            }
        };

        // schedule() মেথড দিয়ে টাস্কটি 5 সেকেন্ড পর চালানো
        timer.schedule(task, 5000); // 5000 milliseconds = 5 seconds
    }
}

Output (after 5 seconds):

Task executed after 5 seconds

ব্যাখ্যা:

  • এখানে schedule() মেথড ব্যবহার করা হয়েছে, যাতে task 5 সেকেন্ড পর কার্যকর হয়।
  • TimerTask এর run() মেথডটি টাস্কের কার্যক্রম নির্ধারণ করে।

2. Repeated Task Scheduling (Fixed-rate and Fixed-delay)

Timer এর মাধ্যমে টাস্ককে পুনরাবৃত্তি (repeated) নির্দিষ্ট সময় অন্তর চালানো যায়। এ জন্য scheduleAtFixedRate() বা schedule() মেথডের বিভিন্ন ভেরিয়েন্ট ব্যবহার করা হয়। দুটি গুরুত্বপূর্ণ পদ্ধতি:

  • Fixed-rate scheduling: এটি নির্দিষ্ট সময় পর পর টাস্ক চালায়, এমনকি পূর্ববর্তী টাস্ক সম্পন্ন হতে কিছুটা সময় লাগলে।
  • Fixed-delay scheduling: এটি পূর্ববর্তী টাস্ক সম্পূর্ণ হওয়ার পরে নির্দিষ্ট সময় পর পর টাস্ক চালায়।

Example: Repeated Task with Fixed-Delay Scheduling

import java.util.Timer;
import java.util.TimerTask;

public class RepeatedTaskExample {
    public static void main(String[] args) {
        // Timer object তৈরি
        Timer timer = new Timer();

        // TimerTask তৈরি করা
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                System.out.println("Task executed at: " + System.currentTimeMillis());
            }
        };

        // schedule() মেথড দিয়ে 2 সেকেন্ড পর পর টাস্ক চালানো
        timer.schedule(task, 0, 2000); // 0 delay and repeat every 2000 milliseconds (2 seconds)
    }
}

Output:

Task executed at: 1611000000000
Task executed at: 1611000002000
Task executed at: 1611000004000
...

ব্যাখ্যা:

  • schedule() মেথডে প্রথম প্যারামিটার 0 নির্দিষ্ট করে যা ইঙ্গিত দেয় যে টাস্কটি এখনই চালাতে হবে এবং দ্বিতীয় প্যারামিটার 2000 দিয়ে প্রতি 2 সেকেন্ড পর পর পুনরাবৃত্তি করতে বলা হয়েছে।

3. Fixed-Rate Scheduling Example

Fixed-rate scheduling যখন প্রয়োজন হয়, যেখানে পূর্ববর্তী টাস্কের সম্পন্ন হওয়ার উপর ভিত্তি না করে নির্দিষ্ট সময় পর পর টাস্ক চালাতে হবে।

import java.util.Timer;
import java.util.TimerTask;

public class FixedRateTaskExample {
    public static void main(String[] args) {
        // Timer object তৈরি
        Timer timer = new Timer();

        // TimerTask তৈরি করা
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                System.out.println("Fixed-rate Task executed at: " + System.currentTimeMillis());
            }
        };

        // scheduleAtFixedRate() মেথড দিয়ে প্রতি 2 সেকেন্ড পর পর টাস্ক চালানো
        timer.scheduleAtFixedRate(task, 0, 2000); // 0 delay and repeat every 2000 milliseconds (2 seconds)
    }
}

Output:

Fixed-rate Task executed at: 1611000000000
Fixed-rate Task executed at: 1611000002000
Fixed-rate Task executed at: 1611000004000
...

ব্যাখ্যা:

  • scheduleAtFixedRate() মেথডটি ব্যবহার করা হয়েছে যা প্রতি 2 সেকেন্ড পর পর টাস্ক চালাবে। Fixed-rate এর ক্ষেত্রে, পূর্ববর্তী টাস্কের সম্পন্ন হওয়ার পর কিছুটা বিলম্ব হলেও পরবর্তী টাস্ক নির্দিষ্ট সময়ে চালানো হবে।

4. Cancelling a Timer

Timer এবং তার সাথে সম্পর্কিত TimerTask টাস্কগুলোকে cancel() মেথড ব্যবহার করে বন্ধ করা যেতে পারে।

import java.util.Timer;
import java.util.TimerTask;

public class TimerCancelExample {
    public static void main(String[] args) {
        // Timer object তৈরি
        Timer timer = new Timer();

        // TimerTask তৈরি করা
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                System.out.println("Task executed");
            }
        };

        // schedule() মেথড দিয়ে 2 সেকেন্ড পর টাস্ক চালানো
        timer.schedule(task, 2000);
        
        // 3 সেকেন্ড পরে টাস্কটি cancel করা
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("Cancelling the Timer");
                timer.cancel();
            }
        }, 3000);  // 3 seconds later
    }
}

Output:

Task executed
Cancelling the Timer

ব্যাখ্যা:

  • cancel() মেথডটি Timer এর সমস্ত টাস্ক বন্ধ করে দেয়। এখানে 2 সেকেন্ড পর একটি টাস্ক চলছে, আর 3 সেকেন্ড পর cancel() মেথড কল হচ্ছে যা টাস্ক বন্ধ করে দেয়।

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

Content added By
Promotion

Are you sure to start over?

Loading...