मैं बाहरी सर्वर से कनेक्शन बनाने के लिए एक बहुप्रचारित अनुप्रयोग विकसित कर रहा हूं - प्रत्येक अलग धागे पर - और इनपुट होने तक अवरुद्ध हो जाएगा। इनमें से प्रत्येक थ्रेड क्लास फैलाता है। स्पष्टीकरण के लिए, आइए इन "कनेक्शन थ्रेड" को कॉल करें।जावा: जब मैं किसी अन्य धागे से इंटरप्ट करता हूं, तो मैं थ्रेड पर इंटरप्टेड एक्सेप्शन कैसे पकड़ूं?
ये सभी कनेक्शन थ्रेड एक समवर्ती हैशप में संग्रहीत हैं।
फिर, मैं किसी भी धागे को रद्द करने के लिए रीस्टफुल वेब सेवा विधि कॉल को अनुमति देता हूं। (मैं ग्रीज़ली/जर्सी का उपयोग कर रहा हूं, इसलिए प्रत्येक कॉल अपने आप पर एक थ्रेड है।)
मैं विशिष्ट कनेक्शन थ्रेड (हैशपैप से) पुनर्प्राप्त करता हूं और उस पर इंटरप्ट() विधि को कॉल करता हूं।
तो, यहां प्रश्न है, कनेक्शन थ्रेड के भीतर, मैं इंटरप्टेड एक्सेप्शन को कैसे पकड़ूं? (जब मैं बाहरी रीस्टफुल कमांड द्वारा कनेक्शन थ्रेड को रोकता हूं तो मैं कुछ करना चाहता हूं।)
ठीक है, AFAIK, जब थ्रेड इंटरप्टेडएक्स फेंकता है। यह उस धागे तक फैल जाएगा जिसने अपवाद फेंकने का अपवाद शुरू किया था। यह उस पैरेंट थ्रेड पर है जिसे आप आईई पकड़ सकते हैं। –
मैंने कनेक्शन थ्रेड शुरू करने वाले कोड को घेरने के लिए अभी एक प्रयोग किया है, और संकलक चेतावनी देता है कि इंटरप्टेड एक्सेप्शन फेंक नहीं दिया गया है। – ikevin8me
आगे, उन थ्रेड थ्रेडों को शुरू करने वाले पैरेंट थ्रेड प्रतीक्षा या नींद की स्थिति में नहीं जाते हैं, इसलिए इसका मतलब है (या कम से कम मुझे लगता है) यह उन सभी बच्चों के धागे शुरू करने के बाद अस्तित्व में है। – ikevin8me