मैं दो थ्रेड को मुख्य थ्रेड से कॉल कर रहा हूं, उन्हें थ्रेड 1 और थ्रेड 2 कहें। जब थ्रेड 1 बंद हो जाता है, तो मैं थ्रेड 2 को रोकना या मारना चाहता हूं। मैं यह कैसे कर सकता हूं? वास्तविक आउटपुट में एक बदलाव है जो मैं चाहता हूं। यही एक मुख्य वर्ग है जो धागा भी है। मुख्य वर्ग से मैं थ्रेड 1 और थ्रेड 2 को कॉल कर रहा हूं। मैं मुख्य वर्ग से थ्रेड 1 में इनपुट दे रहा हूं लेकिन जब यह इनपुट बदल रहा है, तो मैं चल रहे थ्रेड 1 को मारना चाहता हूं और इसे एक बार फिर एक और इनपुट के साथ शुरू करना चाहता हूं। दूसरा थ्रेड, थ्रेड 2 थ्रेड 1 द्वारा दिए गए आउटपुट के साथ चलाएगा। आखिरकार जब पहला धागा मारे जाए तो दूसरा चल रहा होगा लेकिन केवल तभी आउटपुट देगा जब t6here उस थ्रेड के लिए इनपुट हो।मैं जावा में किसी अन्य धागे से धागे को कैसे मारूं?
उत्तर
जावा स्पष्ट रूप से एक और धागा मारने के लिए तरीकों का त्याग दिया है (Thread.stop/Thread.destroy की तरह)। सही तरीका यह सुनिश्चित करना है कि अन्य थ्रेड पर संचालन रोकने के लिए कहा जा रहा है (उदाहरण के लिए, वे एक इंटरप्टेड एक्सेप्शन की अपेक्षा करते हैं, जिसका अर्थ है कि आप इसे रोकने के लिए Thread.interrupt() को कॉल कर सकते हैं)।
आप दूसरे धागे को daemon thread के रूप में सेट करने में भी रुचि रखते हैं, जिसका अर्थ है कि यदि वीएम में अन्य सभी धागे समाप्त हो गए हैं तो प्रक्रिया बाहर निकल जाएगी।
these instructions के अनुसार, यह झंडा चर का उपयोग करने के लिए अपने काम सफाई से रोकने के लिए अन्य धागा बताने के लिए सबसे अच्छा है।
कैसे नीचे धागे सफाई से बंद करने के लिए पर this Java Specialist article देखें।
संक्षेप में, आलेख Thread.interrupt()
प्लस उचित InterruptedException
थ्रेड कोड में हैंडलिंग की सिफारिश करता है। यह अपने आप में एक दिलचस्प चर्चा है, और कुछ ऐसा जो मैंने शायद ही कभी सही तरीके से किया है।
यह लेख किसी भी व्यक्ति को पढ़ने और अनुशंसित किया गया है जिसमें जावा – abyx
run()
अपने धागे की विधि में, shutdown()
जैसे एक्सेसर विधि के माध्यम से सेट की गई विशेषता को जांचें, जब आप थ्रेड को रोकना चाहते हैं, तो उस मान का उपयोग लूप को समाप्त करने के लिए करें। उदाहरण के लिए:
boolean stopping = false;
Thread currentThread = null;
public void run() {
currentThread = Thread.currentThread();
while (!isStopping()) {
// do something, sleep a while
}
}
public synchronized void shutdown() {
stopping = true;
currentThread.notifyAll();
}
public synchronized boolean isStopping() {
return stopping;
}
में डौग ली के समवर्ती प्रोग्रामिंग को पढ़ने के लिए पर्याप्त समय नहीं है आपके कोड में रेस स्थिति है और सिंक्रनाइज़ेशन का आपका उपयोग खराब है। वर्तमान धागे की बाधित स्थिति को जांचना या यदि आपको किसी प्रकार के सेंटीनेल का उपयोग करना चाहिए, तो कम से कम इसे परमाणु बनाना चाहिए। – Kevin
@ केविन, आपको * याद आना चाहिए * उदाहरण के लिए, बिट, यह कोड स्पष्ट रूप से केवल एक समाधान की संरचना दिखाने के लिए है - जैसा कि उपयोग नहीं किया जाना चाहिए। – rsp
@rsp: यदि आप उदाहरण पोस्ट करते हैं, तो उन्हें अच्छे उदाहरण बनाएं। यदि लोग पहले से ही बुरे उदाहरणों से भेद करना चाहते थे, तो उन्हें यहां पूछना नहीं होगा। –
- 1. किसी अन्य धागे से मुख्य धागे में कोड चलाना
- 2. किसी अन्य धागे से मुख्य धागे पर रन विधि
- 3. किसी अन्य धागे से अद्यतन लेबल
- 4. जावा में धागे के भीतर धागे?
- 5. यूआई तत्वों को किसी अन्य धागे के भीतर से जोड़ना
- 6. अन्य धागे से वस्तुओं को लौटाना?
- 7. धागे (जावा)
- 8. किसी धागे को 0 धागा
- 9. मैं धागे
- 10. किसी अन्य धागे से एक स्टैक ट्रेस प्रिंट करना
- 11. अन्य धागे को प्रभावित किए बिना node.js में धागे को कैसे सोना है?
- 12. हार्डवेयर धागे बनाम मुलायम धागे?
- 13. धागे
- 14. जावा - धागे और सीपीयू
- 15. वापसी मान जावा धागे
- 16. पीडीबी किसी अन्य धागे में नहीं टूट सकता है?
- 17. अन्य धागे का पिछला भाग
- 18. जावा: सूची धागे स्थानीय?
- 19. आवेदन धागे बनाम सेवा धागे
- 20. का नाम बदलने धागे जावा
- 21. जावा के धागे को प्राथमिकता सेट करना
- 22. क्या cocos2d निर्धारित विधियां किसी अन्य धागे में चलती हैं?
- 23. धागे
- 24. धागे
- 25. धागे
- 26. जावा: जब मैं किसी अन्य धागे से इंटरप्ट करता हूं, तो मैं थ्रेड पर इंटरप्टेड एक्सेप्शन कैसे पकड़ूं?
- 27. धागे
- 28. मुख्य धागे को कैसे अवरुद्ध करें जब तक कि अन्य सभी धागे निष्पादित नहीं हो जाते?
- 29. WinDbg/एसओएस: से प्रबंधित धागे सहसंबंधी कैसे धागे System.Threading.Thread उदाहरणों
- 30. धागे में चल रहे जावा तरीके
थैंक्स सुझाव के लिए बहुत कुछ है लेकिन आप इसे ठीक से निर्दिष्ट करने में मेरी सहायता करते हैं। – Raji