Java.util.Timer वर्ग में निर्धारित कार्य को कैसे रोकें


91

मैं 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
मुझे लगता है कि रद्द करना पर्याप्त है, शुद्ध होने की आवश्यकता नहीं है
लियांगवेग

1
यह टाइमर जोड़ने के लिए अच्छा है। कैनसेल () (एफिशिएंट जावा बुक) के अनुसार फाइनल में
तुषार पांडे

1
@ जैकी यह दोनों के लिए अच्छा अभ्यास है, लेकिन सैद्धांतिक रूप से cancelखुद ही काम करेगा।
फ्रिट्ज एच

10
@ जैकी सही है। टाइमर के कार्यान्वयन को देखो। रद्द करने के बाद पर्स मांगना बिल्कुल बेकार है। रद्द करें संपूर्ण कार्य सूची को साफ़ करता है, जबकि शुद्ध उसी सूची में पुनरावृत्ति करता है, यह जाँचता है कि क्या स्थिति रद्द की गई है और फिर कार्यों को हटा दिया गया है।
बोयेन

2
यदि गतिविधि / टुकड़ा जो टाइमर को शुरू करता है नष्ट हो जाता है या बंद हो जाता है, तो क्या टाइमर अपने आप बंद हो जाता है?
एएलएल


27

आपको उस कार्य को रोकना चाहिए जिसे आपने टाइमर पर निर्धारित किया है: आपका टाइमर:

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

ध्यान दें कि केवल टाइमर को रद्द करने से चल रहे समय-सारणी समाप्त नहीं होंगे।


मैं दो विधियाँ कर रहा हूँ। क्या अलग-अलग तरीकों से तिमिरस्क को रोकना संभव है?
सचिन एचआर

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);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.