मैं तुरंत जावा थ्रेड को रोकना चाहता हूं लेकिन जब मैं थ्रेड का प्रयास करता हूं तो हमेशा रोकने से पहले कुछ समय लगता है। क्या जावा थ्रेड को तुरंत रोकने के लिए मजबूर करने का कोई अच्छा तरीका है?जावा थ्रेड को मजबूती से रोकने के लिए कोई अच्छा तरीका है?
उत्तर
रनिंग थ्रेड Thread.Interrupt
का उपयोग करके बंद नहीं किया जा सकता है, केवल Thread.Interrupt
का उपयोग करके धागे को रोक या अवरुद्ध कर दिया जा सकता है। लेकिन एक साझा चर का उपयोग करके यह संकेत मिलता है कि यह क्या करना है इसे रोकना चाहिए। थ्रेड को आवधिक रूप से चर की जांच करनी चाहिए, (उदा: थोड़ी देर लूप का उपयोग करें) और व्यवस्थित ढंग से बाहर निकलें।
private boolean isExit= false;
public void beforeExit() {
isExit= true;
}
public void run() {
while (!isExit) {
}
}
तुरंत थ्रेड को रोकने का कोई अच्छा तरीका नहीं है।
Thread.stop()
है, लेकिन यह खतरनाक और बहिष्कृत है। यह प्रयोग न करें जब तक कि:आप पूरी तरह से समस्याओं को समझने, और
आप है अच्छी तरह से अपने कोड का विश्लेषण किया और निर्धारित किया है कि समस्याओं लागू नहीं है और/या जोखिम स्वीकार्य हैं।
वहाँ
Thread.interrupt()
है, लेकिन कोई गारंटी नहीं कि धागा जल्दी से बंद हो जाएगा, या यहाँ तक सब पर रोक नहीं है।समय-समय पर ध्वज की जांच करने के लिए थ्रेड लिखने का दृष्टिकोण है, लेकिन यदि ध्वज अक्सर जांच नहीं किया जाता है (दुर्घटना या डिज़ाइन द्वारा), तो थ्रेड जल्दी से नहीं रुक जाएगा।
Fwiw, झंडा और interrupt()
दृष्टिकोण मूलतः एक ही हैं। दोनों मामलों में, जो धागा बाधित होने की अपेक्षा करता है उसे नियमित रूप से जांचने की आवश्यकता होती है; जैसे interrupted()
या isInterrupted()
पर कॉल करके या ध्वज की जांच करके। अंतर यह है कि interrupt()
तंत्र काम करेगा जब कोड notify()
या अवरुद्ध और आईओ ऑपरेशन के लिए प्रतीक्षा कर रहा है। इसकी वजह से, और क्योंकि interrupt
ऐसा करने का एक स्वतंत्र तरीका है, इसे किसी एप्लिकेशन विशिष्ट तंत्र की वरीयता में उपयोग किया जाना चाहिए।
अतिरिक्त रूप से यदि आप जावा इंफ्रास्ट्रक्चर का उपयोग करके ध्वज विधि का उपयोग करना चाहते हैं तो आप 'Thread.currentThread.isInterrupted' का उपयोग कर सकते हैं। – sixtyfootersdude
@sixtyfootersdude - मुझे विश्वास है कि मैंने पहले ही कहा है। –
किसी भी परिस्थिति में थ्रेड.स्टॉप का उपयोग न करें - अगर आप यह सवाल पूछ रहे हैं तो आप जावा थ्रेडिंग मॉडल को सुरक्षित रूप से उपयोग करने के लिए पर्याप्त नहीं समझते हैं।
विवरण, उत्सुक के लिए, यहां हैं: http://download.java.net/jdk7/archive/b131/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html
यदि आप जावा संगामिति पर वास्तव में अच्छा मिलता है, तो आप समझ जायेंगे क्यों आप इसका इस्तेमाल कभी नहीं करना चाहिए, और कहा कि भले ही वह भीतर पूरी तरह सुरक्षित है आपके स्वयं का कोड, यह आपके कोड दूषित और किसी और द्वारा अनुपयोगी बनाता है। इसके बजाय आप संभवतया बुलियन वैरिएबल चाल या कुछ अन्य पैटर्न का उपयोग करके थ्रेड को बताने के लिए समाप्त कर देंगे और फिर बाहर निकलेंगे।
थ्रेड.स्टॉप का उपयोग न करें। कभी।
मैं लगभग लिंक पर Thread.stop() thx का उपयोग करने की अनुमति दे रहा था! –
एक अच्छा तरीका को सुरक्षित रूप से (और जल्दी) बल एक धागा रोक नहीं है:
System.exit(0)
दुर्भाग्य से, यह अन्य सभी धागे की हत्या के पक्ष प्रभाव है।
पावर कॉर्ड को खींचकर भी काम करता है :-) –
हालांकि मैं आपके डेटा सेंटर पर ऐसा करने की अनुशंसा नहीं करता हूं :-) –
यह एक बुरा जवाब है, यह मेरे सभी धागे को मार देता है !!! – HDJEMAI
- 1. थ्रेड को रोकने के लिए एंड्रॉइड सबसे अच्छा और सुरक्षित तरीका
- 2. कक्षा को तत्काल होने से रोकने का सबसे अच्छा तरीका?
- 3. थ्रेड को रोकने/फिर से शुरू करने के लिए
- 4. मजबूती के लिए सर्वोत्तम अभ्यास
- 5. सत्यापन त्रुटि होने पर टेक्स्टबॉक्स फोकस को रोकने से रोकने का सबसे अच्छा तरीका क्या है?
- 6. क्या कोई अच्छा जावा थ्रेड माइग्रेशन पैकेज है?
- 7. चुपचाप विफल होने से जावास्क्रिप्ट को रोकने का कोई तरीका?
- 8. सबसे अच्छा तरीका है जावा
- 9. मास्टर पेज को तत्व आईडी बदलने से रोकने के लिए कोई तरीका?
- 10. ऑटो रीसेट इवेंट बनाम बूलियन थ्रेड को रोकने के लिए
- 11. एकाधिक क्रोम.स्टॉरेज एपीआई कॉल में दौड़ की स्थिति को रोकने के लिए सबसे अच्छा तरीका है?
- 12. क्या CABasicAnimation को रोकने का कोई तरीका है?
- 13. क्या सोफेड इंडेक्सर प्रक्रिया को रोकने का कोई तरीका है?
- 14. सिल्वरलाइट थ्रेड को रोकने के लिए संवाद की पुष्टि करें
- 15. थ्रेड को रोकने/निलंबित करने के लिए कैसे जारी रखें?
- 16. एक इंटरफ़ेस को विस्तारित होने से रोकने के लिए
- 17. क्या अनिश्चित काल तक धागे को रोकने का कोई तरीका है?
- 18. ग्रैडल बिल्ड को रोकने के लिए अनुशंसित तरीका
- 19. क्रेडिट कार्ड के डुप्लिकेट उपयोग को रोकने के लिए सबसे अच्छा तरीका
- 20. क्या AlertDialog को अमान्य इनपुट के साथ बंद करने से रोकने का कोई तरीका है?
- 21. क्या कुछ पथों के लिए Symfony2 सत्र कुकीज़ भेजने को रोकने का कोई तरीका है?
- 22. क्या sys.exit() से पकड़े गए SystemExit अपवाद को पकड़े जाने से रोकने का कोई तरीका है?
- 23. क्या * रीशेर्पर को समानांतर में असेंबली के यूनिट परीक्षण चलाने से रोकने का कोई तरीका है?
- 24. क्या डॉस विंडो खोलने के लिए _popen को रोकने का कोई तरीका है?
- 25. जुड़ने से पहले थ्रेड लौटने से रोकने के लिए कैसे करें() को
- 26. क्या एक्सकोड को इंटरनेट से डाउनलोड करने से रोकने का कोई तरीका है?
- 27. क्या कैलेयर छाया को आसन्न परतों को ओवरलैप करने से रोकने का कोई तरीका है?
- 28. एरलांग। सही तरीका प्रक्रिया को रोकने के
- 29. क्या पीआईडी का उपयोग करके mplayer को रोकने और रोकने के लिए कोई आदेश है?
- 30. क्या विंडोज सेवा से HTTP कॉल को रोकने के लिए फिडलर को कॉन्फ़िगर करने का कोई तरीका है?
आवश्यकता पर निर्भर करता है। खैर, आप तुरंत इंटरप्ट() –
@ मोहम्मद साल्घ का उपयोग कर रोक सकते हैं: मैं इसका उपयोग कर रहा हूं। लेकिन यह धागा को रोकने के लिए समय ले रहा है। मैं अपने सर्वर कंसोल पर उस प्रक्रिया को देख सकता हूं। –
कृपया नीचे दिए गए उत्तर की तलाश करें .. –