जब मेरा एप्लिकेशन किसी विंडो को बंद करके या System.exit() विधि का आविष्कार करके बाहर निकलने के लिए तैयार होता है। क्या मुझे मैन्युअल रूप से बनाए गए थ्रेड को रोकना है या जावा मेरे लिए इसका ख्याल रखेगा?क्या मुझे जावा में मैन्युअल रूप से धागे को रोकना है?
9
A
उत्तर
11
मामलों में आप System.exit() का उपयोग करते हैं। सभी धागे रुक जाएंगे कि वे डिमन हैं या नहीं।
अन्यथा, JVM स्वचालित रूप से Thread.setDaemon (true) द्वारा निर्धारित डेमॉन थ्रेड वाले सभी थ्रेड को रोक देगा। दूसरे शब्दों में, जेवीएम केवल तब बाहर निकल जाएगा जब शेष धागे शेष सभी डिमन थ्रेड या कोई धागे नहीं हैं।
नीचे दिए गए उदाहरण पर विचार करें, यह मुख्य विधि रिटर्न के बाद भी चलना जारी रखेगा। लेकिन यदि आप इसे डिमन पर सेट करते हैं, तो यह मुख्य विधि (मुख्य धागा) समाप्त होने पर समाप्त हो जाएगा।
public class Test {
public static void main(String[] arg) throws Throwable {
Thread t = new Thread() {
public void run() {
while(true) {
try {
Thread.sleep(300);
System.out.println("Woken up after 300ms");
}catch(Exception e) {}
}
}
};
// t.setDaemon(true); // will make this thread daemon
t.start();
System.exit(0); // this will stop all threads whether are not they are daemon
System.out.println("main method returning...");
}
}
3
यदि आप खूबसूरती से बाहर निकलने से पहले धागे को रोकना चाहते हैं, तो शटडाउन हुक एक विकल्प हो सकता है।
लगता है:
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
//Stop threads }
});
देखें: hook-design
संबंधित मुद्दे
- 1. मार्शल मैन्युअल रूप से
- 2. क्या मुझे डेटा आकार की जानकारी को टीसीपी हस्तांतरण में मैन्युअल रूप से एम्बेड करना चाहिए?
- 3. क्या मुझे asp.net में ईवेंट (मैन्युअल रूप से सदस्यता) से सदस्यता समाप्त करने की आवश्यकता है?
- 4. जावा बाध्यकारी बनाम कक्षाओं को मैन्युअल रूप से परिभाषित करना
- 5. पाइथन मैन्युअल रूप से
- 6. मैन्युअल रूप से
- 7. मैन्युअल रूप से कॉमप्रेट
- 8. थ्रेड को रोकना/रोकना क्यों बुरा है?
- 9. क्या मुझे इनपुट स्ट्रीम को मैन्युअल रूप से बंद करने की आवश्यकता है?
- 10. मैन्युअल रूप से सी # ऑब्जेक्ट्स
- 11. मैन्युअल रूप से उन्हें
- 12. क्या मुझे सभी आश्रित रत्नों को मैन्युअल रूप से अनइंस्टॉल करना है?
- 13. मैन्युअल रूप से devise
- 14. मैन्युअल रूप से आईडी
- 15. क्या कोई मुझे धागे समझा सकता है?
- 16. WIF मैन्युअल रूप से federationmetadata.xml
- 17. मैन्युअल रूप से नई पंक्ति
- 18. मैन्युअल रूप से संदर्भ जोड़ें
- 19. गिटब मुद्दे को मैन्युअल रूप से
- 20. पंक्ति ताले - मैन्युअल रूप से उनका उपयोग
- 21. मुझे जावा में आयात विवरणों को डिफ़ॉल्ट रूप से
- 22. ggplot2: मैन्युअल रूप से स्केल_एरिया
- 23. मैन्युअल रूप से कर्सर में पंक्तियां जोड़ना
- 24. क्या मुझे ifstream मैन्युअल रूप से बंद करने की आवश्यकता है?
- 25. विंडोज पर मैन्युअल रूप से जावा स्थापित करना?
- 26. मैन्युअल रूप से प्रेषण DOMContentLoaded
- 27. Knockout.js: मैन्युअल रूप से गणना
- 28. जावा। सैक्स पार्सर मैन्युअल रूप से पार्सिंग कैसे तोड़ें?
- 29. मैं जावा में किसी अन्य धागे से धागे को कैसे मारूं?
- 30. पर्ल में, क्या अनफिन को मैन्युअल रूप से 0 में परिवर्तित करने का शानदार तरीका है?