दिलचस्प पोस्ट
मोनोस्टेट बनाम सिंगलटन कक्षा पद्धतियों के रूप में एरो फ़ंक्शंस (सार्वजनिक वर्ग फ़ील्ड) का उपयोग कैसे करें? WPF पृष्ठभूमिवर्कर बनाम डिस्पैचर एनएटी में एक्सीक्यूटिंग एक्स्ट के पथ को प्राप्त करने का सबसे अच्छा तरीका क्या है? पायथन को किसी भिन्न फ़ोल्डर से आयात करने के लिए नहीं मिल सकता है मैं अपने एप्लिकेशन में अपने स्प्रिंग बूट एप में हैिकारीप को कैसे कॉन्फ़िगर कर सकता हूं। प्रॉपर्टीज़ फाइलें? एक अजगर स्क्रिप्ट को एक अजगर स्क्रिप्ट से चलाएं, एल्ग्स में गुजर रहा है उपप्रोसेस का उपयोग करके रीयलटाइम आउटपुट प्राप्त करना जावास्क्रिप्ट में एस्केप उद्धरण क्या पायथन स्ट्रिंग पर टुकड़ा-द्वारा-संदर्भ करता है? जावा में एक फ़ाइल के मध्य में बाइट्स लिखने का सर्वोत्तम तरीका लोड पथ में emacs.d के बारे में चेतावनी अक्षम करें घोंसले के शिकार <div> होगा जब नेस्टिंग <p> काम नहीं करेगा? डिबगर में विशिष्ट पहचान प्रकार के संदर्भ में कैसे जावा में अंतर मानों को जोड़ना है?

जावा में शट डाउन हुक का उपयोगी उदाहरण?

मैं यह सुनिश्चित करने की कोशिश कर रहा हूं कि मेरा जावा एप्लिकेशन मजबूत होने के लिए उचित कदम उठाएगा, और इसका एक हिस्सा अनुग्रहपूर्वक बंद करना शामिल है मैं शटडाउन हुक के बारे में पढ़ रहा हूं और वास्तव में उन्हें अभ्यास में इस्तेमाल करने का तरीका नहीं मिलता।

वहाँ एक व्यावहारिक उदाहरण है?

मान लीजिए कि मेरे पास वास्तव में एक साधारण अनुप्रयोग है, जो नीचे दिए गए इस एक तरह से है, जो एक फ़ाइल में नंबर लिखते हैं, एक पंक्ति में 10, 100 के बैचों में, और मुझे यह सुनिश्चित करना है कि यदि प्रोग्राम बाधित हो तो दिए गए बैच समाप्त हो जाए। मुझे एक शटडाउन हुक रजिस्टर करने का तरीका मिलता है लेकिन मुझे यह नहीं पता कि यह कैसे मेरे आवेदन में एकीकृत किया जाए। कोई सुझाव?

package com.example.test.concurrency; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintWriter; public class GracefulShutdownTest1 { final private int N; final private File f; public GracefulShutdownTest1(File f, int N) { this.f=f; this.N = N; } public void run() { PrintWriter pw = null; try { FileOutputStream fos = new FileOutputStream(this.f); pw = new PrintWriter(fos); for (int i = 0; i < N; ++i) writeBatch(pw, i); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { pw.close(); } } private void writeBatch(PrintWriter pw, int i) { for (int j = 0; j < 100; ++j) { int k = i*100+j; pw.write(Integer.toString(k)); if ((j+1)%10 == 0) pw.write('\n'); else pw.write(' '); } } static public void main(String[] args) { if (args.length < 2) { System.out.println("args = [file] [N] " +"where file = output filename, N=batch count"); } else { new GracefulShutdownTest1( new File(args[0]), Integer.parseInt(args[1]) ).run(); } } } 

Solutions Collecting From Web of "जावा में शट डाउन हुक का उपयोगी उदाहरण?"

आप निम्न कर सकते हैं:

  • शट डाउन हुक को कुछ परमाणु बुलियन (या वाष्पशील बूलियन) को "रखरखाव" को झूठे में सेट करें
  • (वैकल्पिक रूप से, कार्य थ्रेड्स को .interrupt करें, यदि वे कुछ अवरुद्ध कॉल में डेटा की प्रतीक्षा करते हैं)
  • थ्रेड्स को कॉल करके, थ्रेड्स को writeBatch करके, काम करने वाले धागे के लिए प्रतीक्षा करें (अपने मामले में writeBatch को कार्यान्वित करें)।
  • प्रोग्राम को समाप्त करें

कुछ स्केच्चि कोड:

  • एक static volatile boolean keepRunning = true;
  • रन में () आप को बदलते हैं

     for (int i = 0; i < N && keepRunning; ++i) writeBatch(pw, i); 
  • मुख्य () में आप जोड़ते हैं:

     final Thread mainThread = Thread.currentThread(); Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { keepRunning = false; mainThread.join(); } }); 

यह लगभग है कि मैं कैसे एक सुंदर "टर्मिनल में नियंत्रण-सी मारने पर सभी ग्राहकों को अस्वीकार कर देता हूं"


डॉक्स से :

जब वर्चुअल मशीन अपना शट डाउन अनुक्रम शुरू करती है तो यह कुछ अनिर्दिष्ट क्रम में सभी पंजीकृत शटडाउन हुक शुरू कर देगी और उन्हें समवर्ती रूप से चलाएगा। जब सभी हुक समाप्त हो जाते हैं, तो अंतिम रूप से ऑन-एक्जेट सक्षम होने पर, सभी असिंकित अंतिम उपकरण चलाएंगे। अंत में, वर्चुअल मशीन बंद हो जाएगी।

यही है, एक शटडाउन हुक जोवी तक चल रहा है जब तक हुक समाप्त नहीं हो जाता है ( रन () -मध्य से लौटा दिया जाता है।

शटडाउन हुक अनिर्धारित थ्रेड्स हैं जो रनटाइम.एडशूटडाउनहुक () के साथ पंजीकृत हैं। जेवीएम उस आदेश पर कोई गारंटी नहीं देता जिसमें शटडाउन हुक शुरू हो रहा है। अधिक जानकारी के लिए http://techno-terminal.blogspot.in/2015/08 देखें /shutdown-hooks.html