java - Interrupt current thread inside run() doesn't throw InterruptedException -
मैंने परीक्षण करने के लिए एक सरल कार्य किया interrupt ()
& amp; बाधा उत्पन्न अपवाद
जावा में:
सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {checkInterrupt (); } निजी स्थिर शून्य चेक इंटररर्ट () {रनयनीय रनमे = नया रननाबल () {@ ओवरराइड पब्लिक वायड रन () (के लिए (इंट आई = 0; आई & lt; 6; i ++) {System.out.println ("i =" + i ); यदि (i == 3) {System.out.println ("I == 3, थ्रेड =" + थ्रेड। खरेंचट्रेड ()। GetId ()); // I कार्य थ्रेड पर इंटरप्ट () को आह्वान करता है Thread.currentThread () बीच में ()।; }}}}; थ्रेड वर्किंग धागा = नया धागा (रनमे); System.out.println ("कार्यप्रसार (" + workThread.getId () + ") 1 बाधित?" + WorkThread.isInterrupted ()); workingThread.start (); {WorkThread.join () का प्रयास करें; } पकड़ (बाधित ईक्सेप्शन ई) {/ / मैंने सोचा कि मुझे बाधा उत्पन्न होनी चाहिए, लेकिन मैंने ऐसा नहीं किया, क्यों? System.out.println ("कार्यप्रसार (" + workThread.getId () + ") बाधित है।"); } System.out.println ("वर्किंगथ्रेड (" + workThread.getId (+ +) "2) बाधित?" + WorkThread.isInterrupted ()); }
जैसा कि आप ऊपर देख रहे हैं, चलाने में (), मैं काम कर धागा को थ्रेड.क्रेन्थथ्रेड () को चालू करके बाधित करता हूं। Interrupt ()
जब i == 3
। मैंने सोचा था कि मेरे कोड को बाधित विकल्प
के दौरान workThread.join ()
को पकड़ना चाहिए। लेकिन इसमें कोई अपवाद नहीं है। क्यों?
आपको एक रुकावट वाला अपवाद
मिलेगा अगर धागा कॉलिंग दूसरे में मरने के लिए इंतजार करते समय
जुड़ने में बाधा उत्पन्न होती है ऐसा नहीं है कि आपके मामले में क्या होता है - आप उस थ्रेड में शामिल हो रहे हैं जो आप में शामिल हो रहे हैं जो पूरी तरह से अलग बात है।
Comments
Post a Comment