यदि एक InterruptedException
फेंक दिया जाता है तो इसका मतलब है कि कुछ उस धागे को बाधित करना चाहता है (आमतौर पर समाप्त)। यह थ्रेड interrupt()
विधि के लिए कॉल द्वारा ट्रिगर किया गया है । प्रतीक्षा विधि पता लगाती है और फेंकती है InterruptedException
ताकि कैच कोड तुरंत समाप्ति के अनुरोध को संभाल सके और निर्दिष्ट समय पूरा होने तक इंतजार न करना पड़े।
यदि आप इसे एकल-थ्रेडेड ऐप (और कुछ मल्टी-थ्रेडेड ऐप में भी) का उपयोग करते हैं, तो वह अपवाद कभी भी ट्रिगर नहीं होगा। खाली कैच क्लॉज होने से इसे नजरअंदाज करना मैं सिफारिश नहीं करूंगा। InterruptedException
थ्रेड की बाधित स्थिति को साफ करता है, इसलिए यदि ठीक से संभाला नहीं गया तो वह जानकारी खो जाती है। इसलिए मैं चलाने का प्रस्ताव करूंगा:
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
// code for stopping current task so thread stops
}
जो उस अवस्था को फिर से सेट करता है। उसके बाद, निष्पादन समाप्त करें। यह सही व्यवहार होगा, यहां तक कि कठिन भी कभी नहीं किया जाता है।
इसे जोड़ने के लिए बेहतर क्या हो सकता है:
} catch (InterruptedException e) {
throw new RuntimeException("Unexpected interrupt", e);
}
... कैच ब्लॉक का बयान। मूल रूप से इसका मतलब है कि ऐसा कभी नहीं होना चाहिए। इसलिए यदि कोड का उपयोग ऐसे वातावरण में किया जाता है जहां ऐसा हो सकता है तो वह इसके बारे में शिकायत करेगा।