क्या ऐसा कोई तरीका है जो थ्रेड की तरह कुछ करने का कोई तरीका है जो कुछ एक्स एमएस एमएस करता है जो मैं शुरू कर सकता हूं, रोक सकता हूं, और फिर जब चाहूं तब फिर से शुरू कर सकता हूं? मुझे पता है कि एक धागा शुरू किया जा सकता है लेकिन धागे को रोकने और फिर से शुरू करने के लिए कोई वास्तविक सुरक्षित तरीका नहीं है।जावा - आप कैसे धागे की तरह कुछ बनाते हैं जिसे शुरू किया जा सकता है और रोका जा सकता है?
उत्तर
आप पृष्ठभूमि कार्यकर्ता धागे पर कार्यों को शेड्यूल करने के लिए java.util.Timer कक्षा का उपयोग कर सकते हैं।
ScheduledExecutorService एक है बेहतर विकल्प – Scorpion
@ वृश्चिक: यदि कार्य सरल है, तो अधिक जटिल संरचनाओं का उपयोग करने की आवश्यकता नहीं है। – Tudor
ट्यूडर: अनुसूचितExecutorService का उपयोग जटिल नहीं है (कम से कम टाइमर का उपयोग करने से अधिक जटिल नहीं है) जैसा कि @ लिरिक के जवाब से सचित्र है। साथ ही, यह (http://stackoverflow.com/questions/409932/java-timer-vs-executorservice) चर्चा आपको कुछ अंतर्दृष्टि देनी चाहिए क्यों टाइमर से बचा जाना चाहिए। – Scorpion
धागे को रोकने के लिए निश्चित रूप से सुरक्षित तरीके हैं। http://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html पढ़ें। और धागे को रोकना और इसे फिर से शुरू करना केवल ध्वज स्थापित करना और wait
और notifyAll
उचित रूप से उपयोग करना है।
हालांकि आप शायद उच्च-स्तरीय अमूर्तता की तलाश में हैं। ScheduledExecutorService
पर एक नज़र डालें।
यहाँ कैसे शुरू करने के लिए पर उदाहरण के एक गुच्छा रहे हैं/जावा में समय-समय पर कार्य रोक:
- How to schedule a periodic task in Java? (मूल रूप से निष्पादक सेवा)
- Schedule periodic tasks (एक विभिन्न तरीकों में अधिक विस्तृत अन्वेषण आवधिक कार्य शेड्यूल करने के लिए)
पहले लिंक से उदाहरण:
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(yourRunnable, 8, 8, HOURS);
थ्रेड पोल एक्जिक्यूटर के जावाडॉक्स में थ्रेड पूल बनाने का एक उदाहरण है जिसे रोका/फिर से शुरू किया जा सकता है। यहां लिंक http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html
यह औद्योगिक ताकत का नहीं है लेकिन आपको विचार देने के लिए पर्याप्त होना चाहिए।
मुझे विश्वास है कि आप जो खोज रहे हैं वह टाइमर क्लास है, जो आपको समय-समय पर टाइमरटास्क के उप-वर्ग की रन विधि निष्पादित करने की अनुमति देगा।
आवर्ती घटनाओं के लिए, उदाहरण के http://enos.itcollege.ee/~jpoial/docs/tutorial/essential/threads/timer.html (थोड़ा संशोधित और यहाँ सुविधा के लिए नकल की) पर दिया जाता है:
public class AnnoyingMessage {
Timer timer;
public AnnoyingBeep() {
timer = new Timer();
timer.schedule(new RemindTask(),
0, //initial delay
1*1000); //subsequent rate = once a second.
}
class RemindTask extends TimerTask {
int numWarningBeeps = 3;
public void run() {
if (numWarningBeeps > 0) {
System.out.println(" MESSAGE!");
numWarningBeeps--;
} else {
System.out.println("Done");
timer.cancel();
}
}
}
}
- 1. एएसपी.नेट एमवीसी 3 नियंत्रण/घटक कैसे बनाया जा सकता है जिसे अन्य अनुप्रयोगों द्वारा पुन: उपयोग किया जा सकता है
- 2. अनुशंसित विकी जिसे हरोकू पर तैनात किया जा सकता है?
- 3. कक्षा क्षेत्रों को कैसे शुरू किया जा सकता है?
- 4. तत्काल क्या किया जा सकता है?
- 5. क्या पीडीएफ को वेक्टर छवि प्रारूप में परिवर्तित किया जा सकता है जिसे .NET से मुद्रित किया जा सकता है?
- 6. DLLImport Int ** - यह कैसे किया जा सकता है अगर यह किया जा सकता है
- 7. Aptana "चयन शुरू किया जा सकता है, और वहाँ कोई हाल की शुरूआत कर रहे हैं।"
- 8. प्रिंट सब कुछ आयात किया जा सकता है कि
- 9. गतिशील रूप से लोड किया जा सकता है जावास्क्रिप्ट अनलोड किया जा सकता है?
- 10. क्या घोषणा में एक संघ शुरू किया जा सकता है?
- 11. जावा में स्ट्रिंग को कैसे सत्यापित किया जा सकता है?
- 12. जावा एनोटेशन यूनिट परीक्षण किया जा सकता है?
- 13. आईफोन: UIButton को कैसे बनाया जा सकता है जिसे आप आसानी से टैप कर सकते हैं?
- 14. जावा में स्क्रीन रिज़ॉल्यूशन कैसे प्राप्त किया जा सकता है?
- 15. क्या जेएफआरएएम को सामने लाया जा सकता है लेकिन ध्यान केंद्रित नहीं किया जा सकता है?
- 16. जावा एसओएपी सर्वर जिसे टोमकैट, जेबॉस, गेरोनिमो इत्यादि आदि में तैनात किया जा सकता है आदि
- 17. क्या मोनैड हैं जिन्हें एक automaton की तरह इस्तेमाल किया जा सकता है?
- 18. , इसे कब मुक्त किया जा सकता है?
- 19. आप एक कक्षा को दोबारा कैसे दोहराते हैं जिसे लगातार संपादित किया जा रहा है?
- 20. जीसीसी को केवल मशीन कोड कैसे उत्पन्न करें जिसे सीधे मेमोरी में लोड किया जा सकता है और निष्पादित किया जा सकता है?
- 21. Cpython में क्या किया जा सकता है जो IronPython में नहीं किया जा सकता है?
- 22. ऑपरेटर && लागू नहीं किया जा सकता है
- 23. एंड्रॉइड मैं कितने धागे जा सकता हूं?
- 24. "चयन शुरू नहीं किया जा सकता है और कोई हालिया लॉन्च नहीं है" pydev/eclipse
- 25. जावा प्रकार नहीं सुलझाया जा सकता है
- 26. कोड के कुछ हिस्सों को संशोधित करने से अविश्वसनीयता को रोका जा सकता है?
- 27. जावा एप्लिकेशन कैसे बनाएं, जिसे एक क्लिक से चलाया जा सकता है?
- 28. badoo.com उपयोगकर्ता खोज - यह कैसे किया जा सकता है?
- 29. आईफोन और एंड्रॉइड द्वारा कौन सा ऑडियो प्रारूप रिकॉर्ड किया जा सकता है और वापस खेला जा सकता है?
- 30. रूबी ऑपरेटरों की सूची जिसे ओवरराइड/कार्यान्वित किया जा सकता है
http://www.quartz-scheduler.org/ पर एक नज़र डालें –