Timer এবং TimerTask ক্লাসগুলি java.util প্যাকেজের অংশ, যা scheduled tasks বা নির্দিষ্ট সময়ের মধ্যে কাজ পরিচালনা করার জন্য ব্যবহৃত হয়। এটি মূলত সময় নির্ধারিত কাজগুলো নির্দিষ্ট সময় পরপর চালানোর জন্য ব্যবহৃত হয়।
এই ক্লাস দুটি মূলত থ্রেড ব্যবস্থাপনা এবং সিস্টেমের কাজকে নির্দিষ্ট সময় অনুযায়ী শিডিউল করার জন্য ব্যবহৃত হয়, যেমন কিছু কাজ একবার চলবে বা নির্দিষ্ট সময় পর পর চলবে।
Timer Class
Timer একটি ক্লাস যা TimerTask অবজেক্টগুলি শিডিউল করার জন্য ব্যবহৃত হয়। Timer ক্লাসের মাধ্যমে আপনি নির্দিষ্ট সময় পর অথবা নিয়মিত কোনো কাজ চালানোর জন্য একটি থ্রেড তৈরি করতে পারেন।
Main Features of Timer:
- Scheduling Tasks: আপনি একটি
Timerঅবজেক্ট তৈরি করে এতে একটিTimerTaskযোগ করে নির্দিষ্ট সময়ে অথবা নির্দিষ্ট সময় পর পর কাজ চালাতে পারেন। - Fixed-Rate and Fixed-Delay Scheduling: আপনি fixed-rate (একটি নির্দিষ্ট সময়ের ব্যবধানে কাজ চালানো) অথবা fixed-delay (একটি কাজ শেষ হওয়ার পর পরবর্তী কাজ শুরু হবে) শিডিউল করতে পারেন।
Methods of Timer Class:
schedule(TimerTask task, long delay): নির্দিষ্ট বিলম্ব পর একটি টাস্ক শুরু করবে।schedule(TimerTask task, long delay, long period): নির্দিষ্ট বিলম্ব পর কাজটি শুরু করবে এবং নির্দিষ্ট সময়ে পর পর কাজটি পুনরাবৃত্তি করবে।cancel(): একটি Timer বন্ধ করে দেয় এবং আর কোনো টাস্ক চলতে দেয় না।purge(): সব অসম্পন্ন কাজগুলি মুছে ফেলবে।
TimerTask Class
TimerTask একটি অ্যাবস্ট্রাক্ট ক্লাস যা Runnable ইন্টারফেসকে বাস্তবায়ন করে এবং Timer এর মাধ্যমে শিডিউল করা কোনো কাজের প্রতিনিধিত্ব করে। TimerTask ক্লাসটি run() মেথডে কাজটি বাস্তবায়ন করে, যা Timer টাস্ক শিডিউল করার সময় এক্সিকিউট করা হয়।
Methods of TimerTask Class:
run(): এই মেথডটিTimerTaskঅবজেক্টের মাধ্যমে যেকোনো কাজ করার জন্য ব্যবহৃত হয়। এটিTimerটাস্ক শিডিউল করার সময় স্বয়ংক্রিয়ভাবে কল করা হয়।
Timer এবং TimerTask এর ব্যবহারের উদাহরণ
1. একটি একক কাজ (One-time Task) শিডিউল করা
এখানে একটি উদাহরণ দেওয়া হলো যেখানে একটি নির্দিষ্ট বিলম্ব পর TimerTask এর মাধ্যমে কাজটি একবার চালানো হবে।
import java.util.Timer;
import java.util.TimerTask;
public class TimerExample {
public static void main(String[] args) {
Timer timer = new Timer(); // Timer object created
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Task executed after 3 seconds!");
}
};
// Schedule the task to run after 3 seconds delay
timer.schedule(task, 3000); // 3000 milliseconds = 3 seconds
}
}
Output:
Task executed after 3 seconds!
2. নির্দিষ্ট সময় পর পর কাজ চালানো (Repeating Task)
এখানে একটি উদাহরণ দেওয়া হলো যেখানে একটি নির্দিষ্ট সময় পর পর কাজটি চালানো হবে।
import java.util.Timer;
import java.util.TimerTask;
public class RepeatingTaskExample {
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Task executed every 2 seconds!");
}
};
// Schedule the task to repeat every 2 seconds after an initial delay of 1 second
timer.scheduleAtFixedRate(task, 1000, 2000); // 1000 ms delay, 2000 ms period
}
}
Output:
Task executed every 2 seconds!
Task executed every 2 seconds!
Task executed every 2 seconds!
...
3. Timer.cancel() এবং Timer.purge() ব্যবহার করা
cancel() এবং purge() মেথড ব্যবহার করে টাস্ক বন্ধ করা এবং অসম্পন্ন টাস্ক মুছে ফেলা যায়।
import java.util.Timer;
import java.util.TimerTask;
public class TimerCancelExample {
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Task executed!");
}
};
timer.scheduleAtFixedRate(task, 0, 2000);
// Cancel the task after 6 seconds
new Timer().schedule(new TimerTask() {
@Override
public void run() {
System.out.println("Cancelling task...");
timer.cancel(); // Stops the task from running
}
}, 6000);
}
}
Output:
Task executed!
Task executed!
Task executed!
Cancelling task...
Timer এবং TimerTask এর সুবিধা ও সীমাবদ্ধতা
সুবিধা:
- Scheduled Task Management:
Timerক্লাসের মাধ্যমে আপনি নির্দিষ্ট সময়ে বা নির্দিষ্ট সময় পর পর কাজ শিডিউল করতে পারেন, যা সময়ের সাথে সম্পর্কিত কাজগুলো পরিচালনা করতে সহায়ক। - Ease of Use:
TimerএবংTimerTaskব্যবহারের মাধ্যমে সহজেই টাস্ক শিডিউল এবং পরিচালনা করা যায়।
সীমাবদ্ধতা:
- Single-threaded:
Timerক্লাসটি একক থ্রেডের মাধ্যমে কাজ করে। যদি একটি TimerTask দীর্ঘ সময় ধরে চলতে থাকে, তাহলে এটি অন্যান্য কাজের জন্য ব্লক হয়ে যেতে পারে। এর জন্যScheduledExecutorServiceব্যবহার করা যেতে পারে, যা মাল্টি-থ্রেডেড শিডিউলিং প্রদান করে। - Error Handling: যদি কোনো TimerTask ত্রুটি বা এক্সেপশন ফেল করে, তাহলে
Timerবন্ধ হয়ে যেতে পারে এবং পরবর্তী কাজ চলবে না।
TimerএবংTimerTaskক্লাসের মাধ্যমে আপনি সহজেই নির্দিষ্ট সময়ের মধ্যে কাজ শিডিউল এবং পরিচালনা করতে পারেন।- এটি সাধারণ background tasks, periodic tasks, এবং delayed tasks পরিচালনা করতে সাহায্য করে।
Timerএকক থ্রেডে কাজ করে, তাই দীর্ঘ সময় ধরে চলা কাজগুলোর জন্য আরও উন্নত সমাধান যেমনScheduledExecutorServiceব্যবহার করা যেতে পারে।
এই দুটি ক্লাস ব্যবহার করে আপনি সহজে কাজগুলিকে নির্দিষ্ট সময় অনুযায়ী শিডিউল এবং কাস্টমাইজ করতে পারবেন।
Read more