उदाहरण
public class Main {
static volatile boolean exit = false;
public static void main(String[] args) {
System.out.println("मुख्य थ्रेड प्रारंभ हो रहा है");
new Thread() {
public void run() {
System.out.println("आंतरिक थ्रेड प्रारंभ हो रहा है");
while (!exit) {
// प्रतीक्षा करें
}
System.out.println("आंतरिक थ्रेड समाप्त हो रहा है");
}
}.start();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
System.out.println("अपवाद पकड़ा गया: " + e);
}
exit = true;
System.out.println("मुख्य थ्रेड समाप्त हो रहा है");
}
}
आउटपुट
मुख्य थ्रेड प्रारंभ हो रहा है
आंतरिक थ्रेड प्रारंभ हो रहा है
मुख्य थ्रेड समाप्त हो रहा है
आंतरिक थ्रेड समाप्त हो रहा है
व्याख्या: मुख्य क्लास एक नया थ्रेड बनाती है और उस पर 'run' फंक्शन को कॉल करती है। यहां, 'exit' नामक एक बूलियन मान परिभाषित किया जाता है, जिसे प्रारंभ में false पर सेट किया जाता है। व्हाइल लूप के बाहर, 'start' फंक्शन को कॉल किया जाता है। ट्राई ब्लॉक में, नव निर्मित थ्रेड एक विशिष्ट समय के लिए सोता है जिसके बाद अपवाद पकड़ा जाएगा, और प्रासंगिक संदेश स्क्रीन पर प्रदर्शित होगा। इसके बाद, मुख्य थ्रेड समाप्त हो जाएगा क्योंकि exit का मान 'true' पर सेट हो जाएगा।
महत्वपूर्ण नोट्स:
volatileकीवर्ड सुनिश्चित करता है कि सभी थ्रेड्स को 'exit' चर का नवीनतम मान दिखाई दे- यह थ्रेड को सुरक्षित रूप से रोकने का एक सामान्य पैटर्न है
Thread.stop()का उपयोग न करें क्योंकि यह अप्रचलित और असुरक्षित है