वे जीवित नहीं रहते हैं। जेवीएम बाहर निकल जाएगा जब सभी धागे, डेमॉन को छोड़कर, मर गए हैं।
जब आप अपना आवेदन शुरू करते हैं, तो JVM आपकी स्थैतिक मुख्य विधि को चलाने के लिए एकल, गैर-डिमन थ्रेड प्रारंभ करेगा।
एक बार मुख्य विधि निकल जाने के बाद, यह मुख्य धागा मर जाएगा, और यदि आपने कोई अन्य गैर-डिमन थ्रेड नहीं बनाया है, तो JVM बाहर निकल जाएगा।
यदि आपने एक और धागा शुरू किया है, तो JVM बाहर नहीं निकलेगा, यह बाहर निकलने से पहले सभी गैर-डिमन धागे मरने की प्रतीक्षा करेगा।
यदि आपके द्वारा उत्पन्न किया गया थ्रेड कुछ महत्वपूर्ण कर रहा है, तो यह बिल्कुल सही काम है, हालांकि अक्सर आपके पास कुछ धागे हैं जो महत्वपूर्ण नहीं हैं, शायद वे कुछ बाहरी घटनाओं को सुन रहे हैं जो हो सकता है या नहीं भी हो सकता है।
तो, सिद्धांत रूप में, आपको जेवीएम से बाहर निकलने के लिए अनुमति देने वाले सभी थ्रेड को रोकने के लिए कहीं भी कुछ कोड रखना चाहिए।
चूंकि यह त्रुटि प्रवण है, इसलिए इस तरह के गैर-महत्वपूर्ण धागे को डेमॉन के रूप में चिह्नित करना आसान तरीका है। यदि उन्हें इस तरह चिह्नित किया गया है, तो JVM बाहर निकलने से पहले मरने की प्रतीक्षा नहीं करेगा, जेवीएम बाहर निकल जाएगा और उन धागे को मार देगा जब "मुख्य धागे" (जिन्हें डिमन के रूप में चिह्नित नहीं किया गया) की मृत्यु हो गई है।
public class Spawner {
public static void main(String[] args) {
Thread t = new Thread(new Runnable() {
public void run() {
while (true) {
System.out.println("I'm still alive");
}
}
});
t.start();
// Try uncommenting/commenting this line
// t.setDaemon(true);
System.out.println("Main thread has finished");
}
}
(मैं इस कोड का परीक्षण नहीं किया,, सीधे यहां यह लिखा था तो यह बेवकूफ गलतियों को रख सकती):
कोड में कहें
, यह कुछ इस तरह है।
लाइन के साथ इस कोड को चलाने पर टिप्पणी करते समय, धागा deamon नहीं है, इसलिए यदि आपकी मुख्य विधि समाप्त हो गई है, तो आप कंसोल बाढ़ को तब तक जारी रखेंगे जब तक आप इसे CTRL + C से रोक नहीं देते। यही है, जेवीएम बाहर नहीं निकलेगा।
यदि आप लाइन को असम्बद्ध करते हैं, तो थ्रेड एक डिमन है, और मुख्य विधि समाप्त होने के तुरंत बाद, थ्रेड मारा जाएगा और JVM CTRL + C की आवश्यकता के बिना बाहर निकल जाएगा।
आप केवल गलतफहमी कर रहे हैं कि डेमॉन थ्रेड को समाप्त करने के लिए क्या मतलब है _ साधन। समाप्त का अर्थ है 'रननेबल' की 'रन' विधि का पूर्ण निष्पादन। –
कहां कहता है कि वे जीवित रहते हैं? आपका प्रश्न समझ में नहीं आता है, – EJP