Java.util.Timer শ্রেণিতে নির্ধারিত টাস্কটি কীভাবে বন্ধ করবেন


94

আমি java.util.Timerক্লাসটি ব্যবহার করছি এবং আমি এর শিডিয়ুল পদ্ধতিটি কোনও কাজ সম্পাদনের জন্য ব্যবহার করছি, তবে এটি 6 বার কার্যকর করার পরে আমাকে এর কাজটি বন্ধ করতে হবে।

আমি এটা কিভাবে করব?

উত্তর:


141

টাইমারটি কোথাও রেফারেন্স রাখুন এবং ব্যবহার করুন:

timer.cancel();
timer.purge();

এটি যা করছে তা বন্ধ করতে আপনি যে কোডটি ঘটাচ্ছেন তার মধ্যে আপনি যে বারটি static intঘুরে গেছেন তার সংখ্যা গণনা করার জন্য আপনি এই কোডটি রাখতে পারেন

private static int count = 0;
public static void run() {
     count++;
     if (count >= 6) {
         timer.cancel();
         timer.purge();
         return;
     }

     ... perform task here ....

}

10
আমি মনে করি বাতিল করা যথেষ্ট,
খাঁটি হওয়া

4
(কার্যকর জাভা বই) অনুসারে চূড়ান্তভাবে টাইমার ক্যানসেল () যুক্ত করা ভাল
তুষার পান্ডে

4
@ জ্যাকি এটি উভয় থাকার ভাল অনুশীলন, কিন্তু তাত্ত্বিকভাবে cancelনিজেই এটি কাজ করবে।
ফ্রিটজ এইচ

10
@ জ্যাকি ঠিক আছে টাইমার বাস্তবায়ন দেখুন। বাতিল হওয়ার পরে শুদ্ধ কল করা একেবারেই অকেজো। বাতিল পুরো টাস্ক লিস্টটি সাফ করে, শুদ্ধি একই তালিকাতে পুনরাবৃত্তি হয়, স্থিতিটি বাতিল করা আছে কিনা তা পরীক্ষা করে এবং তারপর কার্যগুলি সরিয়ে দেয়।
বায়ান

4
টাইমার শুরু হওয়া ক্রিয়াকলাপ / খণ্ডটি যদি ধ্বংস হয়ে যায় বা বন্ধ হয়ে যায়, তবে টাইমার কি শিডিউল নির্ধারণ করে?
এএলএল


29

আপনি টাইমারটি নির্ধারিত কাজটি বন্ধ করে দেওয়া উচিত: আপনার টাইমার:

Timer t = new Timer();
TimerTask tt = new TimerTask() {
    @Override
    public void run() {
        //do something
    };
}
t.schedule(tt,1000,1000);

থামার জন্য:

tt.cancel();
t.cancel(); //In order to gracefully terminate the timer thread

লক্ষ্য করুন যে কেবলমাত্র টাইমার বাতিল করা চলমান টাইমারস্টাস্কগুলি শেষ করবে না।


আমার দুটি পদ্ধতি রয়েছে Timeআপনি কি বিভিন্ন পদ্ধতি থেকে টাইমার টাস্ককে থামানো সম্ভব?
শচীন এইচআর

16
timer.cancel();  //Terminates this timer,discarding any currently scheduled tasks.

timer.purge();   // Removes all cancelled tasks from this timer's task queue.

1

মিলি সেকেন্ডে নির্দিষ্ট সময়ে জাগ্রত হওয়ার পরে একবার টাইমার সমাপ্ত করুন।

Timer t = new Timer();
t.schedule(new TimerTask() {
            @Override
             public void run() {
             System.out.println(" Run spcific task at given time.");
             t.cancel();
             }
 }, 10000);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.