"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > Java ExecutorService Executors को ठीक से कैसे बंद करें?

Java ExecutorService Executors को ठीक से कैसे बंद करें?

2024-11-10 को प्रकाशित
ब्राउज़ करें:693

How to Properly Shut Down Java ExecutorService Executors?

Java ExecutorService को शालीनता से बंद करना

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

shutdown()

: मौजूदा कार्यों को पूरा करने की अनुमति देते हुए नए कार्यों को सबमिट होने से रोकता है।

    shutdownNow()
  • : सभी निष्पादन और प्रतीक्षा कार्यों को रोकने का प्रयास, असंसाधित कार्यों की एक सूची लौटाना।
  • यह नोट करना महत्वपूर्ण है शटडाउन सभी कार्यों को समाप्त करने की गारंटी नहीं देता है। वे कार्य जो रुकावटों का जवाब देने में विफल रहते हैं या लंबे समय तक चलने वाले संचालन सक्रिय रह सकते हैं।
  • voidshutdownAndAwaitTermination(ExecutorService पूल) { पूल.शटडाउन(); कोशिश { // मौजूदा कार्यों के समाप्त होने की प्रतीक्षा करें यदि (!pool.awaitTermination(60, TimeUnit.SECONDS)) { पूल.शटडाउननाउ(); // रद्दीकरण पर प्रतिक्रिया देने के लिए कार्यों की प्रतीक्षा करें यदि (!pool.awaitTermination(60, TimeUnit.SECONDS)) System.err.println('पूल समाप्त नहीं हुआ'); } } पकड़ें (बाधित अपवाद यानी) { पूल.शटडाउननाउ(); Thread.currentThread().interpt(); } }
यह दृष्टिकोण सुनिश्चित करता है कि नए सबमिशन को रोकते हुए मौजूदा कार्यों को पूरा करने की अनुमति है। यदि शटडाउन प्रक्रिया में अपेक्षा से अधिक समय लगता है, तो आप इसे

if (!pool.awaitTermination(60, TimeUnit.SECONDS))से

जबकि (!pool.awaitTermination(60, TimeUnit.SECONDS))
void shutdownAndAwaitTermination(ExecutorService pool) {
    pool.shutdown();
    try {
        // Wait for existing tasks to terminate
        if (!pool.awaitTermination(60, TimeUnit.SECONDS)) {
            pool.shutdownNow();
            // Wait for tasks to respond to cancellation
            if (!pool.awaitTermination(60, TimeUnit.SECONDS))
                System.err.println("Pool did not terminate");
        }
    } catch (InterruptedException ie) {
        pool.shutdownNow();
        Thread.currentThread().interrupt();
    }
}

शटडाउन विधियों का सारांश
if (!pool.awaitTermination(60, TimeUnit.SECONDS))

shutdown()
while (!pool.awaitTermination(60, TimeUnit.SECONDS))

shutdownNow()

: सभी निष्पादन और प्रतीक्षा कार्यों को रोक देता है, असंसाधित लौटाता है कार्य।

awaitTermination(long timeout, TimeUnit Unit)

: तब तक ब्लॉक रहता है जब तक कि सभी कार्य पूरे नहीं हो जाते, टाइमआउट नहीं हो जाता, या वर्तमान थ्रेड बाधित नहीं हो जाता।
विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: 1729725790 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3